pairs und ipairs

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Viele Skripte müssen oft durch Dictionaries oder Arrays gehen. Aber manchmal wissen Sie möglicherweise nicht, wo der Anfang und das Ende dieser Datenstrukturen sind. Zum Beispiel kann sich ein Dictionary von Spielern ändern, oder Spieler haben ein Array-Inventar unterschiedlicher Grössen.

In diesen Situationen können Sie pairs() und ipairs() verwenden. Diese können mit einer for-Schleife verwendet werden, um jedes Element ohne bekannte Start- und Endpunkte zu durchlaufen.

Dieser Artikel behandelt die Verwendung dieser Funktionen und enthält ein praktisches Skriptbeispiel, in dem Sie Restaurantbestellungen in einem Kochspiel verfolgen.

Dictionaries und pairs()

pairs() wird mit Dictionaries verwendet. Ein Beispiel ist unten zu sehen.


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " ist " .. value)
end

pairs() kann verwendet werden, um mit dem Schlüssel, dem Wert oder beidem eines Dictionary-Elements zu arbeiten. In der folgenden for-Schleife ist die erste Variable der Schlüssel. Die zweite Variable ist der Wert. Das Dictionary, mit dem Sie arbeiten möchten, wird an pairs() übergeben.


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("Du hast:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Wenn der Code ausgeführt wird, wird Folgendes ausgegeben:


Du hast:
43 Gold Bricks
3 Carrots
2 Torches

Arrays und ipairs()

ipairs() wird mit Arrays verwendet. Das "i" in ipairs() steht für "Index". Verwenden Sie ipairs() und Arrays in Kombination mit einer for-Schleife, um mit geordneten Werten wie Bestenlisten zu arbeiten. Ein Beispiel ist unten.


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Gewinner #" .. playerRank .. " ist " .. playerName)
end

Wenn der Code ausgeführt wird, wird Folgendes ausgegeben:


Gewinner #1 ist Ali
Gewinner #2 ist Ben
Gewinner #3 ist Cammy

Übung - Restaurant-Suppen-Simulator

Lass uns etwas Suppe für einen Restaurantsimulator machen, bei dem die Spieler aus einer Liste möglicher Suppenzutaten auswählen. Die Zutaten werden als Schlüssel gespeichert, und die Werte beginnen als false, sodass die Spieler nur das erhalten, was sie auswählen.

Verwenden Sie pairs(), um zu sehen, was ausgewählt wurde, und dann ipairs(), um die Liste der Zutaten auszudrucken.

  1. Erstellen Sie ein neues Dictionary namens menu. Fügen Sie 3 - 5 Schlüssel-Wert-Paare hinzu, wobei der Schlüssel die Zutat und der Wert false ist.


    local menu = {
    kohl = false,
    rindfleisch = false,
    tomate = false,
    haarnudeln = false,
    }
  2. Unterhalb des Menü-Dictionaries fügen Sie ein leeres Array hinzu, das später mit den Wahlen des Kunden gefüllt wird.


    -- Suppe des Kunden
    local selectedIngredients = {}
  3. Verwenden Sie pairs(), um zu überprüfen, ob jede Zutat im Dictionary als true oder false markiert ist. Wenn true, fügen Sie die Zutat zur Suppe hinzu.


    -- Suppe des Kunden
    local selectedIngredients = {}
    -- Fügt die Wahlen des Kunden zu ihrer Suppe hinzu
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Wiederholen Sie die Bestellung für den Kunden. Im Skript codieren Sie Folgendes:

    • Überprüfen Sie, ob es einen Menüpunkt in selectedIngredients gibt. Wenn ja, drucken Sie "Sie haben Suppe mit: " aus.
    • Verwenden Sie ipairs(), um durch das selectedIngredients-Array zu gehen und jede Zutat auszudrucken.
    • Testen Sie, indem Sie mindestens einen Menüpunkt auf true ändern.

    -- Druckt die Suppe-Bestellung von "selectedIngredients"
    if #selectedIngredients > 0 then
    print("Sie haben Suppe mit: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. In der if-Anweisung, die überprüft, ob es einen Menüpunkt gibt, fügen Sie eine else-Bedingung hinzu, die den Kunden mitteilt, ob keine Zutaten ausgewählt wurden.


    if #selectedIngredients > 0 then
    print("Sie haben Suppe mit: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Nichts wurde ausgewählt. Sind Sie nicht hungrig?")
    end

Optionale Herausforderungen

Unten sind einige Herausforderungen aufgeführt, die die Verwendung von pairs und ipairs auf verschiedene Weise anwenden. Versuchen Sie, den Code für diese Herausforderungen zu erstellen.

Herausforderung: Erstellen Sie einen Kellner-NPC Anstelle der Verwendung des Outputfensters verwenden Sie den NPC aus Einführung in Arrays, um einen Kellner zu erstellen, der Kundenbestellungen entgegennimmt.

Herausforderung: Lassen Sie die Spieler Bestellungen aufgeben Erlauben Sie den Spielern, eine Zutat auszuwählen, indem sie einen physischen Teil wie einen Nähe-Trigger berühren. Weitere Informationen finden Sie unter Proximity Prompts.

Fortgeschrittene Herausforderung: Machen Sie mir einen Suppensimulator Erstellen Sie einen Restaurantsimulator, in dem die Spieler die Köche sind! Die Spieler müssen Zutaten zusammenstellen, die mit der Bestellung übereinstimmen, die ihnen der Kellner gegeben hat.

  1. Erstellen Sie In-Game-Requisiten für 3 - 5 verschiedene Zutaten.
  2. Erstellen Sie 3 - 5 Rezepte mit Dictionaries ähnlich dem in dieser Lektion.
  3. Erstellen Sie ein Array, das alle Rezepte enthält.
  4. Wählen Sie zufällig ein Rezept aus und verwenden Sie einen NPC, um den Spielern die Zutaten mitzuteilen.
  5. Erstellen Sie ein neues Dictionary, um ein Rezept basierend auf den vom Spieler berührten Requisiten-Zutaten zu erstellen.
  6. Vergleichen Sie das Rezept des Spielers mit dem Rezept, das vom NPC ausgewählt wurde.
  7. Erhöhen Sie die Herausforderung, indem Sie eine zusätzliche Bedingung hinzufügen, wie z. B. einen Timer.
©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.