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 de 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}`)
endLembre-se de que ipairs para no primeiro índice ausente: um intervalo nil no meio encerra o loop mais cedo. Isso raramente é um problema com arrays bem mantidos, mas é bom saber.
Para maps, use pairs, que visita cada par de chave/valor: incluindo chaves de string. 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}`)
endUma ressalva crucial: pairs visita as chaves da parte de hash em nenhuma ordem garantida. Isso pode variar entre as execuções. Quando você precisa 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 indexe o map.
Desafio
FácilCrie um array tipado temps: {number} inicializado com 18, 21, 19 e 24.
Percorra-o 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) declare 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
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
1Começando com o Luau
O que é Luau?Por que usar Luau?Seu primeiro código em LuauVerificação de tipos e modos de erroRecapitulando: Introdução ao Luau4Trabalhando com Funções
Tipando Parâmetros e Valores de RetornoTipando Funções AnônimasFunções que Não Retornam NadaParâmetros OpcionaisValores Padrão para ParâmetrosFunções VariádicasDefinindo Tipos de FunçõesRecapitulação: Funções Tipadas2Tipos Fundamentais
Tipos Básicos: num, str, boolO Tipo 'any': Escape HatchO Tipo 'unknown'Tipos Nil e OpcionaisInferência de Tipos na PráticaAnotações Explícitas de TiposReciclagem: Prática de Tipos Fundamentais5Aliases, Uniões, Interseções
Aliases de Tipos para PrimitivosTipos de UniãoTrabalhando com Tipos de UniãoTipos LiteraisTipos de InterseçãoCombinando Aliases de TiposRecapitulando: Combinações Avançadas de Tipos3Tabelas Tipadas: Arrays e Maps
Arrays TipadosAdicionando e Lendo ElementosO que é um Tipo Map?Declarando e Acessando MapsIterando Sobre TabelasTabelas de Formato MistoArrays Tipados Multidimensionaistable.unpack e VarargsRecapitulando: Arrays e MapsPratique por conta própria: Compilador de Lua online