Iterando com pairs()
Parte da seção Lógica e fluxo do Journey de Lua da Coddy. Lição 1 de 54.
pairs() permite fazer isso ao possibilitar que você percorra todas as entradas de uma tabela, independentemente do tipo das chaves.A sintaxe para usar pairs() em um laço for é assim:for key, value in pairs(myTable) do
-- use key e value aqui
endpairs() fornece tanto a chave quanto o valor correspondente. Isso significa que você pode acessar e trabalhar com as duas informações ao mesmo tempo.Aqui está um exemplo prático com o inventário de um jogador:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() funciona com qualquer tipo de chave, incluindo strings, números ou até mesmo outras tabelas.Para o desafio: construindo uma stringO desafio abaixo pede que você retorne cada entrada como uma única string, então aqui vai uma revisão de duas ferramentas para strings de Fundamentos. Você junta strings com o operador de concatenação, que são dois pontos (..). Por exemplo, "Hello" .. " " .. "World" resulta em "Hello World".Se você precisar formatar o texto em várias linhas, poderá usar o caractere de escape de nova linha, "\n". Quando Lua encontra "\n" dentro de uma string, interpreta isso como um comando para passar para a próxima linha.Por exemplo, print("Line 1\nLine 2") produzirá:Line 1
Line 2Desafio
FácilEscreva uma função printInventory que receba uma tabela inventory e retorne uma string formatada listando todos os itens e suas quantidades.
Use pairs() para percorrer a tabela de inventário e criar uma string em que cada linha mostre o nome de um item seguido de sua quantidade no formato item: quantity. Cada item deve ficar em uma linha separada.
Para colocar cada item em sua própria linha, use o caractere de nova linha "\n" entre as entradas. Por exemplo, "apple: 5\nbanana: 3" será exibido em duas linhas separadas. Tenha cuidado para não adicionar um "\n" inicial antes do primeiro item: adicione-o apenas entre os itens.
Parâmetros:
inventory(tabela): Uma tabela no estilo de dicionário, em que as chaves são nomes de itens (strings) e os valores são quantidades (números)
Retorna: Uma string com cada item e quantidade em uma linha separada, separados por "\n". Exemplo de saída para {apple=5, banana=3}:apple: 5banana: 3
Experimente você mesmo
function printInventory(inventory)
-- Para formatar a saída, você pode concatenar strings usando o operador '..'.
-- Para adicionar uma nova linha, use o caractere especial '\n'.
-- Talvez você precise de uma forma de saber se está adicionando o primeiro item ou um item seguinte
-- para decidir se deve adicionar uma quebra de linha antes do item.
-- Escreva o código aqui
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