Menu
Coddy logo textTech

Iterieren von Tabellen

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

Du hast schon oft über Lua-Tabellen iteriert: Luau verwendet genau dieselben Schleifen und fügt den Schleifenvariablen Typen hinzu. Bei Arrays durchläuft ipairs die Elemente in der Reihenfolge von Index 1 bis #t, und du kannst beide Variablen annotieren:

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

Beachte, dass ipairs beim ersten fehlenden Index stoppt: Eine nil-Lücke in der Mitte beendet die Schleife vorzeitig. Bei sorgfältig gepflegten Arrays ist das selten ein Problem, aber es ist gut, davon zu wissen.

Für Maps verwendest du pairs, das jedes Schlüssel/Wert-Paar durchläuft, einschließlich der Schlüssel vom Typ String. Bei einer {[string]: number}-Map sind die Schleifenvariablen ganz natürlich 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 durchläuft die Schlüssel des Hash-Teils in nicht garantierter Reihenfolge. Diese kann sich zwischen den Ausführungen unterscheiden. Wenn du eine deterministische Ausgabe benötigst (sortierte Berichte, Tests), sammle die Schlüssel in einem Array, sortiere es mit table.sort und durchlaufe anschließend die sortierten Schlüssel mit ipairs, um auf die Map zuzugreifen.

challenge icon

Aufgabe

Einfach

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

Durchlaufe es mit ipairs und annotiere beide Schleifenvariablen (day: number, temp: number). Gib für jedes Element exakt 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 Summe in einer eigenen Zeile aus.

Probier es selbst

-- Schreibe hier den Code
-- 1) deklariere temps: {number} = {18, 21, 19, 24}
-- 2) for day: number, temp: number in ipairs(temps) do ... end
--    drucke `Day {day}: {temp}` und summiere in total
-- 3) drucke total nach der Schleife
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

Übe selbstständig: Online-Lua-Compiler