Ein häufiges Bedürfnis in vielen Datenstrukturen ist es, Werte zurückzugeben. Dieser Artikel behandelt das Suchen einer Tabelle mit pairs() oder ipairs() für die Hälfte eines Tabellen-Elements, wie z.B. den Schlüssel oder Wert, um die andere Hälfte zu finden und zurückzugeben.
Das Beispiel verwendet ein Array, das Schiffe auflistet, die auf Reparatur warten. ipairs() wird verwendet, um den Platz eines Schiffes in der Warteschlange zurückzugeben.
local shipToFind = "Void Racer"
-- Schiffe, die auf Reparatur warten
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Platz in der Warteschlange erhalten
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
-- Platz in der Warteschlange ausgeben
local placeInLine = getPlaceInLine(shipToFind)
print("Ihr Platz in der Warteschlange ist " .. placeInLine)
Beispiel für eine Dictionary-Suche
Haben Sie jemals nach einem verlorenen Haustier im Haus gesucht, indem Sie von Raum zu Raum gegangen sind? Schreiben Sie Ihre eigene Funktion, um ein Dictionary namens house zu durchsuchen, um herauszufinden, welcher Raum einen verlorenen Welpen hat.
Kopieren Sie das folgende Dictionary, um als das Haus zu fungieren.
local house = {kitchen = "Haufen von Schrott",livingRoom = "Kätzchen",bedroom1 = "niemand dort",bedroom2 = "Welpe",}Erstellen Sie eine neue Funktion mit dem Namen findPet(), um das Dictionary zu durchsuchen. Fügen Sie Parameter hinzu, für welches Dictionary gesucht werden soll und welchen Wert Sie suchen.
Verwenden Sie pairs(), um durch das Dictionary zu iterieren. Versuchen Sie, Ihren eigenen Code zu schreiben, bevor Sie Ihre Arbeit in der Lösung unten überprüfen.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doendendWährend die for-Schleife durch das Dictionary iteriert, 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