Restituzione dei valori delle tabelle

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

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

L'esempio utilizza un elenco di navi in attesa di essere riparate. ipairs() viene utilizzato per restituire il posto di una nave in linea.


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

Esempio di ricerca nel dizionario

Hai mai cercato un animale domestico perduto in casa andando stanza per stanza? Nel tuo codice 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 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 i parametri per quale dizionario Cercaree quale valore cercare.

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


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    end
    end
  4. Mentre il ciclo while si itera attraverso il dizionario, usa return per passare indietro la stanza in cui è stato trovato l'animale.


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