Menu
CoddyTech

Iterieren mit pairs()

Teil des Abschnitts Logik und Programmablauf der Lua-Journey von Coddy. Lektion 1 von 54.

Bei der Arbeit mit Lua-Tabellen im Wörterbuchstil musst du oft auf jedes darin gespeicherte Schlüssel-Wert-Paar zugreifen. Die Funktion pairs() ermöglicht dies, indem sie dich alle Einträge einer Tabelle durchlaufen lässt, unabhängig davon, welchen Typ die Schlüssel haben.Die Syntax zur Verwendung von pairs() in einer for-Schleife sieht so aus:
for key, value in pairs(myTable) do
    -- verwende hier key und value
end
Bei jeder Iteration der Schleife liefert pairs() sowohl den Schlüssel als auch den dazugehörigen Wert. Das bedeutet, dass du auf beide Informationen gleichzeitig zugreifen und mit ihnen arbeiten kannst.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)
end
Dieser Code gibt jeden Artikelnamen und seine Menge aus. Die Funktion pairs() funktioniert mit jedem Schlüsseltyp, einschließlich Zeichenfolgen, Zahlen oder sogar anderen Tabellen.Für die Herausforderung: eine Zeichenkette erstellenDie folgende Herausforderung fordert dich auf, jeden Eintrag als einen String zurückzugeben. Hier ist daher eine Erinnerung an zwei Werkzeuge für Strings aus den Grundlagen. Du verbindest Strings mit dem Verkettungsoperator, der aus zwei Punkten besteht (..). Zum Beispiel ergibt "Hello" .. " " .. "World" das Ergebnis "Hello World".Wenn du Text über mehrere Zeilen formatieren musst, kannst du das Escapezeichen für einen Zeilenumbruch "\n" verwenden. Wenn Lua innerhalb einer Zeichenkette auf "\n" trifft, behandelt es dies als Befehl, zur nächsten Zeile zu wechseln.Zum Beispiel gibt print("Line 1\nLine 2") Folgendes aus:
Line 1
Line 2
challenge icon

Aufgabe

Einfach

Schreibe eine Funktion printInventory, die eine Tabelle inventory entgegennimmt und einen formatierten String zurückgibt, der alle Gegenstände und ihre Mengen auflistet.

Verwende pairs(), um die Tabelle inventory zu durchlaufen, und erstelle einen String, in dem jede Zeile einen Gegenstandsnamen gefolgt von seiner Menge im Format item: quantity enthält. Jeder Gegenstand sollte in einer eigenen Zeile stehen.

Um jeden Gegenstand in einer eigenen Zeile auszugeben, verwende das Zeilenumbruchzeichen "\n" zwischen den Einträgen. Zum Beispiel wird "apple: 5\nbanana: 3" als zwei separate Zeilen angezeigt. Achte darauf, keinen führenden Zeilenumbruch "\n" vor dem ersten Gegenstand hinzuzufügen: Füge ihn nur zwischen den Gegenständen ein.

Parameter:

  • inventory (Tabelle): Eine Tabelle im Wörterbuchstil, deren Schlüssel Gegenstandsnamen (Strings) und deren Werte Mengen (Zahlen) sind

Rückgabewert: Ein String, in dem jeder Gegenstand und seine Menge in einer eigenen Zeile stehen und durch "\n" getrennt sind. Beispielausgabe für {apple=5, banana=3}:
apple: 5
banana: 3

Probier es selbst

function printInventory(inventory)
    -- Um die Ausgabe zu formatieren, kannst du Zeichenketten mit dem Operator '..' verketten.
    -- Um eine neue Zeile einzufügen, verwende das Sonderzeichen '\n'.
    -- Du brauchst möglicherweise eine Möglichkeit, festzuhalten, ob du den ersten Eintrag oder einen weiteren hinzufügst,
    -- um zu entscheiden, ob vor dem Eintrag ein Zeilenumbruch eingefügt werden soll.
    
    -- 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 Logik und Programmablauf

Übe selbstständig: Online-Lua-Compiler