Menu
Coddy logo textTech

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() torna isso possível, permitindo 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 seu valor correspondente. Isso significa que você pode acessar e trabalhar com ambas as 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.Trabalhando com stringsEm Lua, você pode unir strings usando o operador de concatenação, que consiste em 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 o Lua encontra "\n" dentro de uma string, ele o trata como um comando para mover para a próxima linha.Por exemplo, print("Line 1\nLine 2") produzirá a saída:
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 items e suas quantity.

Use pairs() para iterar pela tabela inventory e construir uma string em que cada linha mostre o nome de um item seguido por sua quantity no formato item: quantity. Cada item deve estar 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 como duas linhas separadas. Tenha cuidado para não adicionar um "\n" inicial antes do primeiro item: adicione-o somente entre os items.

Parâmetros:

  • inventory (tabela): Uma tabela no estilo dicionário em que as chaves são nomes de items (strings) e os valores são quantity (números)

Retorna: Uma string com cada item e quantity 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'.
    -- Você pode precisar de uma forma de rastrear se está adicionando o primeiro item ou um subsequente
    -- para decidir se deve adicionar uma nova 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