Menu
Coddy logo textTech

Iterieren mit ipairs()

Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 2 von 54.

Während pairs() mit jeder Tabellenstruktur funktioniert, bietet Lua eine spezialisierte Funktion namens ipairs() an, die speziell für Tabellen im Listenstil entwickelt wurde. Diese Funktion iteriert in sequenzieller Reihenfolge durch Tabellen, beginnend bei Index 1 und fortfahrend, bis sie auf einen nil-Wert stößt.

Die Syntax für ipairs() ähnelt der von pairs():

for index, value in ipairs(myList) do
    -- index und value hier verwenden
end

Hier ist ein Beispiel mit einer Liste von Quest-Gegenständen:

local questItems = {"Map", "Compass", "Torch", "Rope"}

for i, item in ipairs(questItems) do
    print(i .. ". " .. item)
end

Ausgabe:

1. Map
2. Compass
3. Torch
4. Rope

Der entscheidende Unterschied zu pairs() besteht darin, dass ipairs() sofort stoppt, wenn es einen nil-Wert findet, selbst wenn danach noch weitere Elemente folgen.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion listTasks, die eine tasks-Tabelle entgegennimmt und einen formatierten String zurückgibt, der alle Aufgaben mit ihren Positionsnummern auflistet.

Verwende ipairs(), um die Aufgaben in sequenzieller Reihenfolge zu durchlaufen und einen String zu erstellen, bei dem jede Zeile die Aufgabennummer gefolgt vom Aufgabennamen im Format number. task zeigt. Jede Aufgabe sollte in einer separaten Zeile stehen.

Parameter:

  • tasks (table): Eine tabellenartige Liste, die Aufgabennamen als Strings enthält

Rückgabewert: Ein String, bei dem jede Aufgabe in einer separaten Zeile nummeriert ist. Format: 

1. task1
2. task2
3. task3

Spickzettel

ipairs() iteriert durch Tabellen im Listenstil in sequenzieller Reihenfolge, beginnend bei Index 1 und stoppt beim ersten nil-Wert:

for index, value in ipairs(myList) do
    -- index und value hier verwenden
end

Beispiel:

local questItems = {"Map", "Compass", "Torch", "Rope"}

for i, item in ipairs(questItems) do
    print(i .. ". " .. item)
end
-- Ausgabe:
-- 1. Map
-- 2. Compass
-- 3. Torch
-- 4. Rope

Wichtiger Unterschied: Im Gegensatz zu pairs() stoppt ipairs() sofort, wenn es auf einen nil-Wert stößt, selbst wenn danach weitere Elemente existieren.

Probier es selbst

function listTasks(tasks)
    -- Schreibe hier den Code
end
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 Logic & Flow