A tipo de dado table possui funções para facilitar o uso desse tipo de dado. Nesta parte,
vamos aprender algumas das principais funções.
Tab. 1: Funções mais comuns
| Função |
Descrição |
| insert |
adicionar elemento |
| remove |
remover elemento |
| move |
mover/copiar elemento |
| pack |
empacota valores em uma nova table |
| Visitar |
desempacota os valores em uma table |
| concat |
concatena uma table |
| sort |
Ordena os elementos de uma table |
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 do novo elemento. Se não informado, o novo elemento será adicionado no fim.
value: valor para 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 em 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 table de destino.
Os índices inicial, índice final e um índice base para a transferência dos valores são
passaos como argumento.
Sintaxe
table.move(table1, f, e, t, <table2>)
Onde
table1: table origem de os dados
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 de destino da cópia.
<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 ou 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(table1 [, i [, j]])
Onde
table1: 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(s) de table1 entre i e j
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 tables.
Um separador pode ser utilizado como argumento da função.
Sintaxe
table.concat(table1 [, <sep> [, i [, j]]])
Onde
table1: 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 i a j de table1 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
tablee.sort(table1 [, <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.