Un'esigenza comune in molte strutture dati è restituire valori. Questo articolo tratterà la ricerca in una tabella utilizzando pairs() o ipairs() per restituire metà di un qualsiasi elemento della tabella, come la chiave o il valore, al fine di trovare e restituire l'altra metà.
L'esempio utilizza un array che elenca le navi in attesa di essere riparate. ipairs() viene utilizzato per restituire il posto di una nave in fila.
local shipToFind = "Void Racer"
-- Navi in attesa di riparazione
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Ottieni il posto in fila
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--Stampa il posto in fila
local placeInLine = getPlaceInLine(shipToFind)
print("Il tuo posto in fila è " .. placeInLine)
Esempio di ricerca in un dizionario
Hai mai cercato un animale domestico smarrito in casa, stanza per stanza? Codifica da solo una funzione per cercare in un dizionario chiamato house per vedere in quale stanza si trova un cucciolo smarrito.
Copia il dizionario qui sotto per fungere da casa.
local house = {kitchen = "mucchio di rottami",livingRoom = "gattino",bedroom1 = "nessuno lì",bedroom2 = "cucciolo",}Crea una nuova funzione chiamata findPet() per cercare nel dizionario. Includi parametri per quale dizionario cercare e quale valore cercare.
Usa pairs() per iterare nel dizionario. Prova a codificare la tua versione prima di controllare il tuo lavoro nella soluzione qui sotto.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doendendMan mano che il ciclo for itera attraverso il dizionario, usa return per restituire la stanza in cui è stato trovato l'animale domestico.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doif value == searchFor thenreturn placeendendend