A tipo de dado table possui funções para facilitar o uso desse tipo de dado. Nesta parte, vamos
aprender algumas das principais.
Função |
Descrição |
Link |
insert |
adicionar elemento |
Visitar |
remove |
remover elemento |
Visitar |
move |
mover/copiar elemento |
Visitar |
pack |
empacota valores em uma nova table |
Visitar |
unpack |
desempacota os valores em uma table |
Visitar |
concat |
concatena uma table |
Visitar |
sort |
Ordena os elementos de uma table |
Visitar |
Anteriormente aprendemos a inicializar, acessar e alterar o conteúdo de um elemento contido em uma table. Para
adicionarmos um novo elemento, precisamos utilizar a função insert.
Sintaxe
table.insert(table,[pos],value)
Onde
table : tabela onde desejamos inserir um novo elemento
pos: posição onde queremos adicionar um novo elemento. Se não informado, o novo elemento será inserido no fim.
value: valor que desejamos adicionar ou inserir
Exemplo 7
tabela = {1,"string",1.99}
table.insert(tabela,999)
print("Novo valor:",tabela[4])
Saída
Novo valor: 999
Para a remoção de um elemento em uma determinada posição dentro de uma table,
utilizamos a função remove.
Sintaxe
table.remove(list[,pos])
Onde
list: table de onde queremos remover um elemento
pos: Posição do elemento que desejamos remover. Se não informado, o último elemento será resolvido.
Retorno
-
Exemplo 8
tab1 = {1,3,2,4}
print("Antes:",#tab1)
table.remove(tab1)
print("Depois:",#tab1)
Saída
Antes: 4
Depois: 3
Com a função move podemos copiar elementos de uma table para uma um segunda table baseados em um
índice inicial, índice final e um índice base para a transferência dos valores.
Sintaxe
table.move(table1,f,e,t,table2)
Onde
table1: table origem de os dados serão copiados
f: índice inicial para cópia dos valores de a1
e: índice final para cópia dos valores de a1
t: índice base t2 para transferência.
table2: table destino para copia de dados
Retorno
-
Exemplo 9
tab1 = {1,3,2,4}
tab2 = {0,0,0,0} --iniciar zerada
--transfere elementos de
--tab1[1],tab1[2],tab1[3] -> tab2[1],tab2[2],tab2[3]
table.move(tab1,1,3,1,tab2)
for i=1,#tab2,1 do
print(tab2[i])
end
Saída
1
3
2
0
Com a função pack, podemos criar uma nova tabela baseado em uma lista de valores passados como
argumento.
Sintaxe
table.pack(...)
Onde
…: Lista variável de valores para preenchermos a nova tabela.
Retorno
nova table contendo elementos de ...
Exemplo 9
local tab1 = table.pack(1,2,3)
for i=1,#tab1,1 do
print(tab1[i])
end
Saída
1
2
3
Com a função unpack podemos recuperar os dados de uma table baseados em um índice inicial e
final que são passados como argumento. Os dados recuperados são associados a variáveis.
Sintaxe
lista_variaveis = table.unpack (table [, i [, j]])
Onde
table: table com elementos que desejamos recuperar
i: índice inicial
j: índice final
Se os índices não forem informados, automaticamente os valores contidos na table serão associados de
acordo com o número de variáveis informadas.
Retorno
elemento de tab de acordo com seus tipos
Exemplo 10
local tab1 = {1,2,3}
local a,b,c = table.unpack(tab1,1,3) -- ou table.unpack(tab1)
print(a)
print(b)
print(c)
Saída
1
2
3
Quando trabalhamos com table contendo elementos do tipo de dado string, podemos utilizar a função concat
para retornar uma string contendo os elementos concanetados de uma table. Um separador pode ser utilizado como argumento da função.
Sintaxe
table.concat (table [, sep [, i [, j]]])
Onde
table: table que desejamos concatenar os elementos
sep: separador
i: índice inicial
j: índice final
Se i e j não forem especificados, todos os elementos da table serão concatenados. Caso contrário, apenas os
elementos compreendidos entre os elementos serão concatenados.
Retorno
string contendo elementos de list concatenados
Exemplo 11
tab1 = {"str1","str2","str3","str4"}
local retorno = table.concat(tab1,':')
print(retorno)
Saída
str1:str2:str3:str4
Para a ordenação dos elementos em uma table, utilizamos a função sort. Com essa função os elementos de uma
table são ordenados de forma crescente de acordo com o tipo de dado utilizado.
Sintaxe
table.sort (table [, comp])
Onde
table: table que desejamos ordenar
comp: função comparadora aplica a cada elemento da table. Opcional
Retorno
-
Exemplo 12
tabela = {1,3,2,4}
table.sort(tabela) --sort
for i=1,#tabela,1 do
print(i,tabela[i]) --indice / elemento
end
Saída
1 1
2 2
3 3
4 4
Para tables com elementos heterogêneos não é aconselhável utilizar a função sort, pois ocorrerá erro na conversão
dos tipos de dado impossibilitando uma ordenação correta.