Construção de tabelas e unpack()
Parte da seção Logic & Flow do Journey de Lua da Coddy — lição 6 de 54.
Lua fornece um par complementar de técnicas para trabalhar com múltiplos valores: construção de tabelas e table.unpack(). Estas são particularmente úteis ao trabalhar com funções que precisam de manipulação flexível de argumentos.
Você pode capturar múltiplos valores em uma tabela do estilo lista usando a sintaxe de construtor de tabela com chaves. Isso coleta todos os valores em uma única estrutura de tabela.
local args = {10, 20, 30}
print(args[1]) -- Saída: 10
print(#args) -- Saída: 3A função table.unpack() faz o oposto — ela recebe uma tabela do tipo lista e retorna todos os seus elementos como valores separados. Isso permite que você passe o conteúdo da tabela como argumentos individuais para uma função.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- Saída: 5 10 15Essas técnicas funcionam juntas perfeitamente. Você pode coletar valores em uma tabela, manipular a tabela e, em seguida, desempacotá-la de volta em valores individuais.
Desafio
FácilEscreva uma função forwardArguments que receba três números a, b e c, e retorne a soma deles usando a construção de tabela e table.unpack().
Crie uma tabela contendo os três argumentos usando a sintaxe {a, b, c}, depois desempacote-os e passe-os para outra função que calcula a soma deles.
Lógica:
- Use
{a, b, c}para criar uma tabela contendo todos os três argumentos - Crie uma função separada chamada
sumque receba três parâmetros e retorne a soma deles - Use
table.unpack()para passar os valores da tabela para a funçãosum - Retorne o resultado da função
sum
Parâmetros:
a(number): Primeiro númerob(number): Segundo númeroc(number): Terceiro número
Retorna: A soma de todos os três números (number)
Folha de consulta
Sintaxe do construtor de tabela {a, b, c, ...} cria uma tabela no estilo lista. Use # para obter a contagem de elementos.
local args = {10, 20, 30}
print(args[1]) -- Saída: 10
print(#args) -- Saída: 3table.unpack() recebe uma tabela no estilo lista e retorna todos os seus elementos como valores separados, permitindo que você passe o conteúdo da tabela como argumentos individuais para uma função.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- Saída: 5 10 15Experimente você mesmo
function forwardArguments(a, b, c)
-- Crie uma função separada que calcula a soma
-- Crie uma tabela contendo todos os três argumentos
-- Desempacote a tabela e passe os valores para a função sum
end
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Logic & Flow
1Iteração Avançada de Tabelas
Iterando com pairs()Iterando com ipairs()pairs() vs. ipairs()Revisão - Ficha de Personagem2Mais Funções da Biblioteca Table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRecapitulação - Placar de recordes