Menu
CoddyTech

Percorrendo Tabelas

Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 17 de 80.

Você já percorreu tabelas Lua muitas vezes: 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 antes da hora. Isso raramente é um problema com arrays bem mantidos, mas vale a pena saber.

Para mapas, use pairs, que percorre todos os pares de chave/valor, incluindo as chaves de string. Em um mapa {[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

Uma ressalva importante: pairs percorre as chaves da parte hash sem ordem garantida. A ordem pode variar entre execuções. Quando precisar de uma saída determinística (relatórios ordenados, testes), reúna as chaves em um array, aplique table.sort a ele e, em seguida, percorra as chaves ordenadas com ipairs e acesse o mapa pelos índices.

challenge icon

Desafio

Fácil

Imprima uma semana de temperaturas e o total delas.

  1. Declare local temps: {number} = {12, 15, 11, 14} e local total = 0.
  2. Faça um loop com for day: number, temp: number in ipairs(temps) do, imprima `Day {day}: {temp}` e adicione temp a total.
  3. Depois do loop, imprima total.

Pressione Run Code: a saída mostra Day 1: 12 a Day 4: 14, depois 52.

Experimente você mesmo

-- 1) declare temps: {number} e total = 0
-- 2) faça um loop com day e temp tipados, imprima cada day e adicione ao total
-- 3) imprima o total

Todas as lições de Introdução ao Luau

Pratique por conta própria: Compilador de Luau online