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}`)
endLembre-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}`)
endUma 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.
Desafio
FácilImprima uma semana de temperaturas e o total delas.
- Declare
local temps: {number} = {12, 15, 11, 14}elocal total = 0. - Faça um loop com
for day: number, temp: number in ipairs(temps) do, imprima`Day {day}: {temp}`e adicionetempatotal. - 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
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
Tipagem de parâmetros e valores de retornoTipagem de funções anônimasFunções sem retornoParâmetros opcionaisValores padrão dos parâmetrosValores padrão para booleanosFunções variádicasDefinindo tipos de funçãoRecapitulação: funções tipadas2Tipos básicos
Número, string e booleanoO tipo 'any': válvula de escapeO tipo 'unknown'Tipos nulos e opcionaisInferência de tipos na práticaAnotações explícitas de tipoRevisão: prática com tipos básicos5Aliases, 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 MapsPercorrendo TabelasTabelas com Formatos MistosLendo uma GradeConstruindo uma Gradetable.unpackRevisão: Arrays e MapsPratique por conta própria: Compilador de Luau online