Restituzione dei valori dalle tabelle

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Un requisito comune in molte strutture di dati è restituire valori. Questo articolo tratterà la ricerca di una tabella utilizzando pairs() o ipairs() per la metà di qualsiasi elemento di tabella, come la chiave o il valore, per trovare e restituire l'altra metà.

L'esempio usa un elenco di navi in attesa di essere riparate. ipairs() è usato per restituire il posto di una nave.


local shipToFind = "Void Racer"
-- Navi in attesa di riparazione
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Ottieni il posto in linea
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--Stampa il luogo in linea
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)

Esempio di ricerca della dizionaria

Hai mai cercato un animale domestico perduto in casa andando da stanza in stanza? Con il tuo codice personale una funzione per cercare attraverso un dizionario chiamato casa per vedere quale stanza contiene un cucciolo perduto.

  1. Copia il dizionario qui sotto per agire come la casa.


    local house = {
    kitchen = "pile of Junk",
    livingRoom = "kitten",
    bedroom1 = "nobody there",
    bedroom2 = "puppy",
    }
  2. Crea una nuova funzione chiamata findPet() per cercare il dizionario. Includi parametri per cercare quale dizionario Cercaree quale valore cercare.

  3. Usa pairs() per itereggiare attraverso il dizionario. Prova a codificare il tuo prima di controllare il tuo lavoro nella soluzione qui sotto.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    end
    end
  4. Mentre il for loop si ripetisce attraverso il dizionario, usa return per passare indietro la stanza in cui il pet è stato trovato.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    if value == searchFor then
    return place
    end
    end
    end