tabela Lua (tabela)
tabela Lua é uma estrutura de dados usada para ajudar a criar diferentes tipos de dados, tais como: arte digital, dicionários.
tabela Lua com a matriz associada, você pode usar qualquer tipo de valor para fazer um índice da matriz, mas este valor não é nulo.
Lua tamanho da tabela não é fixo, você pode expandir de acordo com as suas necessidades.
Lua também através da mesa para resolver o módulo (módulo), o pacote (pacote) eo objeto (Object) da. Por exemplo indicação string.format "formatar" o índice da tabela string.
tabela de configuração (Tabela)
O construtor é uma expressão para criar e inicializar a tabela. tabela Lua é uma coisa única poderoso. O construtor simples é {} usado para criar uma tabela vazia. Você pode inicializar diretamente a matriz:
-- 初始化表 mytable = {} -- 指定值 mytable[1]= "Lua" -- 移除引用 mytable = nil -- lua 垃圾回收会释放内存
Quando mesa um conjunto de elementos, e depois atribuir a para b, então a e b apontam para a mesma memória. Se um conjunto de zero, então b também podem acessar a tabela de elementos. Se você não especificar os pontos de variáveis a um, a coleta de lixo da Lua irá limpar a memória correspondente.
O exemplo a seguir demonstra a descrição acima da situação:
-- 简单的 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)
O código acima é executado como resultado de:
mytable 的类型是 table mytable 索引为 1 的元素是 Lua mytable 索引为 wow 的元素是 修改前 alternatetable 索引为 1 的元素是 Lua mytable 索引为 wow 的元素是 修改前 mytable 索引为 wow 的元素是 修改后 alternatetable 是 nil mytable 索引为 wow 的元素是 修改后 mytable 是 nil
mesa de operações
A seguinte tabela lista os métodos comuns de operação:
Não. | Method & Purpose |
---|---|
1 | table.concat (table [, setembro [, Início [, Fim]]]): concat é concatenar (cadeia link) abreviação. função table.concat () especifica os parâmetros listados na parte matriz de tabela de todos os elementos da posição inicial para a posição final, espaçadas entre elementos no separador especificado (SEP). |
2 | table.insert (table, [pos,] value): mesa parte matriz local especificado (pos) insert é um elemento de valor. parâmetro Pos é opcional e padrões para a parte final da matriz. |
3 | table.maxn (tabela) Especificar o valor chave da tabela para todos os números positivos o maior valor da chave. Se o valor for positivo, o elemento-chave não estiver presente, ele retorna 0. (Depois Lua5.2 este método não existe, este artigo usa uma função personalizada para conseguir) |
4 | table.remove (table [, pos]) Retorna uma matriz de parte da tabela está localizado na posição elemento pos Posteriormente elemento irá ser movido para a frente. Parâmetro Pos é opcional e o padrão é o comprimento da tabela, a partir do último elemento excluído. |
5 | table.sort (table [, comp]) Para uma determinada tabela em ordem crescente. |
Próximo olharmos para os exemplos desses métodos.
conexão tabela
Podemos usar concat () para ligar dois tabela:
fruits = {"banana","orange","apple"} -- 返回 table 连接后的字符串 print("连接后的字符串 ",table.concat(fruits)) -- 指定连接字符 print("连接后的字符串 ",table.concat(fruits,", ")) -- 指定索引来连接 table print("连接后的字符串 ",table.concat(fruits,", ", 2,3))
Executar os resultados de saída do código acima:
连接后的字符串 bananaorangeapple 连接后的字符串 banana, orange, apple 连接后的字符串 orange, apple
Inserção e remoção
O exemplo a seguir demonstra as operações de inserção de mesa e remoção:
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])
Executar os resultados de saída do código acima:
索引为 4 的元素为 mango 索引为 2 的元素为 grapes 最后一个元素为 mango 移除后最后一个元素为 nil
ordenação da tabela
O exemplo a seguir demonstra a sort () método de utilização, por tabela Ordenar:
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
Executar os resultados de saída do código acima:
排序前 1 banana 2 orange 3 apple 4 grapes 排序后 1 apple 2 banana 3 grapes 4 orange
tabela Max
table.maxn após Lua5.2 este método não existe, nós definimos métodos table_maxn.
O exemplo a seguir demonstra como obter a tabela de valor máximo:
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))
Executar os resultados de saída do código acima:
tbl 长度 3 tbl 最大值 26