Iterieren mit pairs()
Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy — Lektion 1 von 54.
pairs() macht dies möglich, indem sie dir erlaubt, durch alle Einträge einer Tabelle zu iterieren, unabhängig davon, welchen Typ die Schlüssel haben.Die Syntax für die Verwendung von pairs() in einer for-Schleife sieht wie folgt aus:for key, value in pairs(myTable) do
-- verwende key und value hier
endpairs() sowohl den Schlüssel als auch seinen zugehörigen Wert. Das bedeutet, dass Sie auf beide Informationen gleichzeitig zugreifen und mit ihnen arbeiten können.Hier ist ein praktisches Beispiel mit dem Inventar eines Spielers:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
enditem und seine quantity aus. Die pairs()-Funktion funktioniert mit jedem Schlüsseltyp, einschließlich strings, Zahlen oder sogar anderen Tabellen.Arbeiten mit StringsIn Lua können Sie Zeichenketten mit dem Verkettungsoperator zusammenfügen, der aus zwei Punkten (..) besteht. Zum Beispiel ergibt "Hello" .. " " .. "World" den Wert "Hello World".Wenn Sie Text über mehrere Zeilen hinweg formatieren müssen, können Sie das Zeilenumbruch-Escape-Zeichen "\n" verwenden. Wenn Lua auf "\n" innerhalb eines Strings stößt, behandelt es dies als Befehl, zur nächsten Zeile zu wechseln.Zum Beispiel erzeugt print("Line 1\nLine 2") folgende Ausgabe:Line 1
Line 2Aufgabe
EinfachSchreibe eine Funktion printInventory, die eine inventory-Tabelle entgegennimmt und einen formatierten String zurückgibt, der alle Elemente und ihre Mengen auflistet.
Verwende pairs(), um durch die inventory-Tabelle zu iterieren und einen String zu erstellen, in dem jede Zeile einen Elementnamen gefolgt von seiner Menge im Format item: quantity anzeigt. Jedes Element sollte in einer eigenen Zeile stehen.
Um jedes Element in eine eigene Zeile zu setzen, verwende das Newline-Zeichen "\n" zwischen den Einträgen. Zum Beispiel wird "apple: 5\nbanana: 3" als zwei separate Zeilen angezeigt. Achte darauf, kein führendes "\n" vor dem ersten Element hinzuzufügen — füge es nur zwischen den Elementen ein.
Parameter:
inventory(Tabelle): Eine Dictionary-ähnliche Tabelle, bei der die Schlüssel Elementnamen (Strings) und die Werte Mengen (Zahlen) sind
Rückgabe: Ein String, bei dem jedes Element und jede Menge in einer separaten Zeile stehen, getrennt durch "\n". Beispiel-Ausgabe für {apple=5, banana=3}:apple: 5banana: 3
Probier es selbst
function printInventory(inventory)
-- Um die Ausgabe zu formatieren, kannst du Strings mit dem '..'-Operator verketten.
-- Um eine neue Zeile hinzuzufügen, verwende das Sonderzeichen '\n'.
-- Du brauchst möglicherweise eine Möglichkeit, zu verfolgen, ob du das erste Element oder ein nachfolgendes hinzufügst
-- um zu entscheiden, ob vor dem Element ein Zeilenumbruch hinzugefügt werden soll.
-- Schreibe hier den Code
endDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmablauf
1Fortgeschrittene Table-Iteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen4Einführung in Metatables
Was ist eine Metatable?setmetatable & getmetatableDie __index-MetamethodeDie __newindex-MetamethodeDie __tostring-MetamethodeArithmetische Metamethoden Teil 1Arithmetische Metamethoden Teil 2Zusammenfassung – Schreibgeschützte Tabellen7Fortgeschrittene String-Manipulation
string.gsub() für ErsetzungenEinführung in String-Patternsstring.find()string.match()Iterieren mit string.gmatch()Rückblick – Log-File-Parser2Weitere Funktionen der Table-Bibliothek
table.concat()Tabellenerstellung & unpack()table.sort()Benutzerdefiniertes Sortieren mit FunktionenRückblick – Highscore-Tabelle