Menu
Coddy logo textTech

Iterieren von Tabellen

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 17 von 73.

Sie sind schon oft über Lua-Tabellen iteriert — Luau behält genau dieselben Schleifen bei und fügt Typen zu den Schleifenvariablen hinzu. Für Arrays durchläuft ipairs die Elemente in der Reihenfolge, von Index 1 bis #t, und Sie können beide Variablen annotieren:

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

Denken Sie daran, dass ipairs beim ersten fehlenden Index anhält — ein nil-Loch in der Mitte beendet die Schleife vorzeitig. Bei gut gepflegten Arrays ist das selten ein Problem, aber gut zu wissen.

Verwenden Sie für Maps pairs, das jedes Schlüssel/Wert-Paar besucht — einschließlich String-Schlüsseln. Bei einer {[string]: number}-Map sind die Schleifenvariablen natürlicherweise ein string und eine number:

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

Ein wichtiger Vorbehalt: pairs besucht Hash-Teil-Schlüssel in keiner garantierten Reihenfolge — dies kann sich zwischen Ausführungen unterscheiden. Wenn Sie eine deterministische Ausgabe benötigen (sortierte Berichte, Tests), sammeln Sie die Schlüssel in einem Array, sortieren Sie es mit table.sort, iterieren Sie dann mit ipairs über die sortierten Schlüssel und indizieren Sie die Map.

challenge icon

Aufgabe

Einfach

Erstelle ein typisiertes Array temps: {number}, initialisiert mit 18, 21, 19 und 24.

Iteriere mit ipairs darüber und annotiere beide Schleifenvariablen (day: number, temp: number). Gib für jedes Element genau folgendes aus:

Day 1: 18

(unter Verwendung von String-Interpolation mit Backticks) und addiere jede Temperatur zu einer laufenden Summe.

Gib nach der Schleife die Gesamtsumme in einer eigenen Zeile aus.

Probier es selbst

-- Schreibe den Code hier
-- 1) deklariere temps: {number} = {18, 21, 19, 24}
-- 2) for day: number, temp: number in ipairs(temps) do ... end
--    gib `Day {day}: {temp}` aus und summiere in total
-- 3) gib total nach der Schleife aus
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Einführung in Luau