Construção de tabelas e unpack()
Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 6 de 54.
unpack(). Elas são particularmente úteis ao trabalhar com funções que precisam lidar com argumentos flexíveis.Você pode capturar vários valores em uma tabela no estilo de lista usando a sintaxe de construtor de tabela com chaves. Isso reúne todos os valores em uma única estrutura de tabela.local args = {10, 20, 30}
print(args[1]) -- Saída: 10
print(#args) -- Saída: 3unpack() faz o oposto. Ela recebe uma tabela no estilo de lista e retorna todos os seus elementos como valores separados. Isso permite passar o conteúdo da tabela como argumentos individuais para uma função.Importante: Embora versões mais recentes do Lua (5.2+) tenham movido essa função para table.unpack(), este ambiente executa Lua 5.1, portanto você deve usar a função global unpack().local numbers = {5, 10, 15}
print(unpack(numbers)) -- Saída: 5 10 15Desafio
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 uma tabela e unpack().
Crie uma tabela contendo os três argumentos usando a sintaxe {a, b, c}; em seguida, desempacote-os e passe-os para outra função que calcula a soma deles.
Observação: Use a função global unpack() em vez de table.unpack() para garantir a compatibilidade com este ambiente.
Lógica:
- Use
{a, b, c}para criar uma tabela contendo os três argumentos - Crie uma função separada chamada
sumque receba três parâmetros e retorne a soma deles - Use
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 dos três números (number)
Experimente 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 de soma
-- Dica: Use a função global 'unpack' para expandir os argumentos da tabela
endEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
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çõesRevisão - Placar de pontuações máximasPratique por conta própria: Compilador de Lua online