Menu
CoddyTech

Iterando com pairs()

Parte da seção Lógica e fluxo do Journey de Lua da Coddy. Lição 1 de 54.

Ao trabalhar com tabelas no estilo de dicionário em Lua, muitas vezes você precisa acessar cada par de chave e valor armazenado nelas. A função 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
end
Durante cada iteração do loop, pairs() 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)
end
Este código imprimirá o nome e a quantidade de cada item. A função pairs() 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 2
challenge icon

Desafio

Fácil

Escreva 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: 5
banana: 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
end
quiz iconTeste seus conhecimentos

Esta 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

Pratique por conta própria: Compilador de Lua online