Eine häufige Anforderung in vielen Datenstrukturen ist es, Werte zurückzugeben. Dieser Artikel wird die Suche einer Tabelle mit pairs() oder ipairs() für die Hälfte eines jeden Tabellelements, wie den Schlüssel oder den Wert, erörtern, um die andere Hälfte zu finden und zurückzukehren.
Das Beispiel verwendet eine Matrix, in der Schiffe aufgelistet sind, die repariert werden müssen. ipairs() wird verwendet, um den Platz eines Schiffs in der Reihenfolge zurückzugeben.
local shipToFind = "Void Racer"
-- Schiffe, die auf Reparatur warten
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Bringen Sie sich in die Reihe
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--Bereich drucken
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)
Beispiel für die Suche in einem Dictionary
Haben Sie jemals nach einem verlorenen Haustier im Haus gesucht, das von Zimmer zu Zimmer geht? Mit Ihrem eigenen Code eine Funktion, um durch ein Wörterbuch namens Haus zu suchen, um zu sehen, welcher Raum einen verlorenen Welpen enthält.
Kopiere das Wörterbuch unten, um als Haus zu agieren.
local house = {kitchen = "pile of Junk",livingRoom = "kitten",bedroom1 = "nobody there",bedroom2 = "puppy",}Erstellen Sie eine neue Funktion namens findPet(), um das Wörterbuch zu suchen. Fügen Sie Argumente für die Suche in das Wörterbuch und für die Suche nach dem Wert hinzu.
Verwenden Sie pairs(), um durch das Wörterbuch zu wiederholen. Versuchen Sie, Ihre eigene zu erstellen, bevor Sie Ihre Arbeit im Lösung unten überprüfen.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doendendWenn die for-Loop durch das Dictionaryiteriert, verwenden Sie return, um den Raum zurückzugeben, in dem das Haustier gefunden wurde.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doif value == searchFor thenreturn placeendendend