Menu
CoddyTech

Iterare sulle tabelle

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 17 di 80.

Hai eseguito cicli sulle tabelle Lua molte volte: Luau mantiene gli stessi identici cicli e aggiunge i tipi alle variabili del ciclo. Per gli array, ipairs scorre gli elementi in ordine, dall’indice 1 a #t, e puoi annotare entrambe le variabili:

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

Ricorda che ipairs si ferma al primo indice mancante: un buco nil nel mezzo interrompe anticipatamente il ciclo. Con array ben mantenuti, raramente è un problema, ma è bene saperlo.

Per le mappe, usa pairs, che visita ogni coppia chiave/valore, incluse le chiavi stringa. In una mappa {[string]: number}, le variabili del ciclo sono naturalmente una string e un number:

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

Un’avvertenza fondamentale: pairs visita le chiavi della parte hash in un ordine non garantito. L’ordine può variare da un’esecuzione all’altra. Quando hai bisogno di un risultato deterministico (rapporti ordinati, test), raccogli le chiavi in un array, applica table.sort, poi esegui un ciclo sulle chiavi ordinate con ipairs e accedi alla mappa tramite indice.

challenge icon

Sfida

Facile

Stampa una settimana di temperature e il loro totale.

  1. Dichiara local temps: {number} = {12, 15, 11, 14} e local total = 0.
  2. Usa il ciclo for day: number, temp: number in ipairs(temps) do, stampa `Day {day}: {temp}` e aggiungi temp a total.
  3. Dopo il ciclo, stampa total.

Premi Esegui codice: l'output mostra Day 1: 12 a Day 4: 14, poi 52.

Provalo tu

-- 1) dichiara temps: {number} e total = 0
-- 2) esegui un ciclo con day e temp tipizzati, stampa ogni day e aggiungi a total
-- 3) stampa il totale

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online