Iterando com pairs()
Parte da seção Logic & Flow do Journey de Lua da Coddy — lição 1 de 54.
Ao trabalhar com tabelas do tipo dicionário em Lua, você frequentemente precisa acessar cada par chave-valor armazenado internamente. A função pairs() torna isso possível ao permitir que você percorra todas as entradas em uma tabela, independentemente de qual seja o tipo das chaves.
A sintaxe para usar pairs() em um loop for é assim:
for key, value in pairs(myTable) do
-- use a chave e o valor aqui
endDurante 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)
endEste código imprimirá o nome de cada item e sua quantidade. A função pairs() funciona com qualquer tipo de chave, incluindo strings, números ou até mesmo outras tabelas.
Desafio
FácilEscreva uma função printInventory que recebe uma tabela inventory e retorna uma string formatada listando todos os itens e suas quantidades.
Use pairs() para iterar pela tabela inventory e construir uma string onde cada linha mostra o nome de um item seguido por sua quantidade 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 apenas entre os itens.
Parâmetros:
inventory(tabela): Uma tabela do tipo dicionário onde 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
Folha de consulta
A função pairs() permite que você percorra todos os pares chave-valor em uma tabela do tipo dicionário:
for key, value in pairs(myTable) do
-- use a chave e o valor aqui
endDurante cada iteração, o pairs() fornece tanto a chave quanto seu valor correspondente, permitindo que você acesse ambas as informações simultaneamente.
Exemplo com uma tabela de inventário:
local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endA função pairs() funciona com qualquer tipo de chave, incluindo strings, números ou até mesmo outras tabelas.
Experimente você mesmo
function printInventory(inventory)
-- Escreva o código aqui
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