Latest web development tutorials

Lua таблица (таблица)

Lua таблица представляет собой структуру данных, используемый, чтобы помочь нам создавать различные типы данных, такие как: цифровые, словари.

Lua таблица с ассоциативный массив, вы можете использовать любой тип значения, чтобы сделать индекс массива, но это значение не равно нулю.

Lua размер таблицы не является фиксированной, вы можете расширить в соответствии с их потребностями.

Lua также через стол, чтобы решить модуль (модуль), пакет (пакет) и объекта (объекта). Например, указание string.Format "формат", чтобы индекс строки таблицы.


таблица (таблица) конфигурации

Конструктор представляет собой выражение для создания и инициализации таблицы. Lua таблица является уникальным мощным материал. Самый простой конструктор {} используется для создания пустой таблицы. Вы можете непосредственно инициализировать массив:

-- 初始化表
mytable = {}

-- 指定值
mytable[1]= "Lua"

-- 移除引用
mytable = nil
-- lua 垃圾回收会释放内存

Когда мы таблица набор элементов, а затем присвоить а к Ь, то а и Ь пункт той же памяти. Если набор к нулю, то б можно также получить доступ к таблице элементов. Если вы не укажете переменную указывает на вывоз мусора Lua будет очистить соответствующую память.

Следующий пример демонстрирует приведенное выше описание ситуации:

-- 简单的 table
mytable = {}
print("mytable 的类型是 ",type(mytable))

mytable[1]= "Lua"
mytable["wow"] = "修改前"
print("mytable 索引为 1 的元素是 ", mytable[1])
print("mytable 索引为 wow 的元素是 ", mytable["wow"])

-- alternatetable和mytable的是指同一个 table
alternatetable = mytable

print("alternatetable 索引为 1 的元素是 ", alternatetable[1])
print("mytable 索引为 wow 的元素是 ", alternatetable["wow"])

alternatetable["wow"] = "修改后"

print("mytable 索引为 wow 的元素是 ", mytable["wow"])

-- 释放变量
alternatetable = nil
print("alternatetable 是 ", alternatetable)

-- mytable 仍然可以访问
print("mytable 索引为 wow 的元素是 ", mytable["wow"])

mytable = nil
print("mytable 是 ", mytable)

Приведенный выше код выполняется в результате:

mytable 的类型是 	table
mytable 索引为 1 的元素是 	Lua
mytable 索引为 wow 的元素是 	修改前
alternatetable 索引为 1 的元素是 	Lua
mytable 索引为 wow 的元素是 	修改前
mytable 索引为 wow 的元素是 	修改后
alternatetable 是 	nil
mytable 索引为 wow 的元素是 	修改后
mytable 是 	nil

операционный стол

В следующей таблице перечислены общие методы работы:

Нет. Метод и цель
1 table.concat (таблица [, отд [, начать [, конец]]]):

CONCAT является конкатенация (звено цепи) аббревиатура. Функция table.concat () задает параметры, приведенные в таблице массива части всех элементов из начального положения в конечное положение, расположенных между элементами в указанном сепараторе (SEP).

2 table.insert (таблица, [поз,] значение):

Массив часть таблицы указано местоположение (поз) вставка является элементом значения. Параметр поз является необязательным и по умолчанию к концевой части массива.

3 table.maxn (таблица)

Укажите значение ключа таблицы для всех положительных чисел по величине значение ключа. Если значение является положительным, ключевым элементом нет, она возвращает 0. (После того, как Lua5.2 этот метод не существует, эта статья использует пользовательскую функцию для достижения)

4 table.remove (таблица [поз])

Возвращает массив части таблицы находится в положении поз элемента После этого элемент будет перемещен вперед. Параметр Pos является необязательным и по умолчанию длины таблицы, начиная с последнего элемента удален.

5 table.sort (таблица [Сост])

Для данной таблицы в порядке возрастания.

Далее мы рассмотрим примеры этих методов.

подключение Таблица

Мы можем использовать CONCAT () метод для подключения двух таблицы:

fruits = {"banana","orange","apple"}
-- 返回 table 连接后的字符串
print("连接后的字符串 ",table.concat(fruits))

-- 指定连接字符
print("连接后的字符串 ",table.concat(fruits,", "))

-- 指定索引来连接 table
print("连接后的字符串 ",table.concat(fruits,", ", 2,3))

Выполните приведенные выше результаты вывода кода:

连接后的字符串 	bananaorangeapple
连接后的字符串 	banana, orange, apple
连接后的字符串 	orange, apple

Вставка и удаление

Следующий пример демонстрирует операции вставки и удаления таблицы:

fruits = {"banana","orange","apple"}

-- 在末尾插入
table.insert(fruits,"mango")
print("索引为 4 的元素为 ",fruits[4])

-- 在索引为 2 的键处插入
table.insert(fruits,2,"grapes")
print("索引为 2 的元素为 ",fruits[2])

print("最后一个元素为 ",fruits[5])
table.remove(fruits)
print("移除后最后一个元素为 ",fruits[5])

Выполните приведенные выше результаты вывода кода:

索引为 4 的元素为 	mango
索引为 2 的元素为 	grapes
最后一个元素为 	mango
移除后最后一个元素为 	nil

Таблица сортировки

Следующий пример демонстрирует вид () метод использования, для таблицы Сортировка:

fruits = {"banana","orange","apple","grapes"}
print("排序前")
for k,v in ipairs(fruits) do
	print(k,v)
end

table.sort(fruits)
print("排序后")
for k,v in ipairs(fruits) do
	print(k,v)
end

Выполните приведенные выше результаты вывода кода:

排序前
1	banana
2	orange
3	apple
4	grapes
排序后
1	apple
2	banana
3	grapes
4	orange

Таблица Макс

table.maxn после Lua5.2 этот метод не существует, мы определим методы table_maxn.

В следующем примере показано, как получить максимальную таблицу значений:

function table_maxn(t)
    local mn = 0
    for k, v in pairs(t) do
        if mn < k then
            mn = k
        end
    end
    return mn
end
tbl = {[1] = "a", [2] = "b", [3] = "c", [26] = "z"}
print("tbl 长度 ", #tbl)
print("tbl 最大值 ", table_maxn(tbl))

Выполните приведенные выше результаты вывода кода:

tbl 长度 	3
tbl 最大值 	26