Menu
Coddy logo textTech

Iterando Sobre Tabelas

Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 17 de 73.

Você já percorreu tabelas em Lua muitas vezes — o Luau mantém exatamente os mesmos loops e adiciona tipos às variáveis do loop. Para arrays, ipairs percorre os elementos em ordem, do índice 1 até #t, e você pode anotar ambas as variáveis:

local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
    print(`Day {day}: {temp}`)
end

Lembre-se de que ipairs para no primeiro índice ausente — um espaço nil no meio encerra o loop precocemente. Isso raramente é um problema com arrays bem mantidos, mas vale a pena saber.

Para maps, use pairs, que visita cada par chave/valor — incluindo chaves de texto. Em um map {[string]: number}, as variáveis do loop são naturalmente uma string e um number:

local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
    print(`{name} is {age}`)
end

Um aviso crucial: pairs visita as chaves da parte hash sem nenhuma ordem garantida — isso pode diferir entre execuções. Quando você precisar de uma saída determinística (relatórios ordenados, testes), colete as chaves em um array, ordene com table.sort, depois percorra as chaves ordenadas com ipairs e acesse o map pelo índice.

challenge icon

Desafio

Fácil

Crie um array tipado temps: {number} inicializado com 18, 21, 19 e 24.

Faça um loop sobre ele com ipairs, anotando ambas as variáveis do loop (day: number, temp: number). Para cada elemento, imprima exatamente:

Day 1: 18

(usando interpolação de string com crases) e adicione cada temperatura a um total acumulado.

Após o loop, imprima o total em sua própria linha.

Experimente você mesmo

-- Escreva o código aqui
-- 1) declarar temps: {number} = {18, 21, 19, 24}
-- 2) for day: number, temp: number in ipairs(temps) do ... end
--    imprimindo `Day {day}: {temp}` e somando no total
-- 3) imprima o total após o loop
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 Introdução ao Luau