Iterieren mit pairs()
Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 1 von 54.
Beim Arbeiten mit Tabellen im Dictionary-Stil in Lua müssen Sie oft auf jedes darin gespeicherte Schlüssel-Wert-Paar zugreifen. Die Funktion pairs() macht dies möglich, indem sie es Ihnen erlaubt, alle Einträge in einer Tabelle zu durchlaufen, unabhängig davon, welchen Typ die Schlüssel haben.
Die Syntax für die Verwendung von pairs() in einer for-Schleife sieht so aus:
for key, value in pairs(myTable) do
-- Schlüssel und Wert hier verwenden
endWährend jeder Iteration der Schleife liefert pairs() sowohl den Schlüssel als auch den dazugehö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)
endDieser Code gibt jeden Elementnamen und dessen Menge aus. Die pairs()-Funktion arbeitet mit jedem Schlüsseltyp, einschließlich Strings, Zahlen oder sogar anderen Tabellen.
Aufgabe
EinfachSchreiben Sie eine Funktion printInventory, die eine inventory-Tabelle entgegennimmt und einen formatierten String zurückgibt, der alle Artikel und deren Mengen auflistet.
Verwenden Sie pairs(), um durch die inventory-Tabelle zu iterieren und einen String zu erstellen, bei dem jede Zeile einen Artikelnamen gefolgt von seiner Menge im Format item: quantity anzeigt. Jeder Artikel sollte in einer separaten Zeile stehen.
Um jeden Artikel in eine eigene Zeile zu setzen, verwenden Sie das Zeilenumbruchzeichen "\n" zwischen den Einträgen. Zum Beispiel wird "apple: 5\nbanana: 3" als zwei separate Zeilen angezeigt. Achten Sie darauf, nicht ein führendes "\n" vor dem ersten Artikel hinzuzufügen — fügen Sie es nur zwischen den Artikeln hinzu.
Parameter:
inventory(table): Eine Tabelle im Dictionary-Stil, bei der die Schlüssel Artikelnamen (Strings) und die Werte Mengen (Zahlen) sind
Rückgabewert: Ein String, bei dem jeder Artikel und jede Menge in einer separaten Zeile stehen, getrennt durch "\n". Beispielausgabe für {apple=5, banana=3}:apple: 5banana: 3
Spickzettel
Die Funktion pairs() ermöglicht es Ihnen, alle Schlüssel-Wert-Paare in einer Tabelle im Dictionary-Stil zu durchlaufen:
for key, value in pairs(myTable) do
-- verwenden Sie hier key und value
endBei jeder Iteration liefert pairs() sowohl den Schlüssel als auch den zugehörigen Wert, sodass Sie gleichzeitig auf beide Informationen zugreifen können.
Beispiel mit einer Inventar-Tabelle:
local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endDie Funktion pairs() funktioniert mit jedem Schlüsseltyp, einschließlich Strings, Zahlen oder sogar anderen Tabellen.
Probier es selbst
function printInventory(inventory)
-- Schreibe hier den Code
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
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