pairs e ipairs

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

Molti script avranno spesso bisogno di attraversare dizionari o array. Ma a volte, potresti non conoscere l'inizio e la fine di queste strutture dati. Ad esempio, un dizionario di giocatori potrebbe cambiare, oppure i giocatori potrebbero avere un inventario di array di dimensioni variabili.

In queste situazioni, puoi utilizzare pairs() e ipairs(). Queste possono essere utilizzate con un ciclo for per attraversare ogni elemento senza punti di partenza e di arrivo conosciuti.

Questo articolo tratterà l'utilizzo di essi e avrà un esempio pratico di uno script in cui si tracciano gli ordini di un ristorante in un gioco di cucina.

Dizionari e pairs()

pairs() viene utilizzato con dizionari. Un esempio è mostrato qui sotto.


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " è " .. value)
end

pairs() può essere utilizzato per lavorare con la chiave, il valore o entrambi di un elemento del dizionario. Nel ciclo for sottostante, la prima variabile è la chiave. La seconda variabile è il valore. Il dizionario con cui vuoi lavorare viene passato a pairs().


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("Hai:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Quando eseguito, il codice stamperà quanto segue:


Hai:
43 Gold Bricks
3 Carrots
2 Torches

Array e ipairs()

ipairs() viene utilizzato con array. La "i" in ipairs() sta per "indice". Usa ipairs() e array in combinazione con un ciclo for per lavorare con valori ordinati come le classifiche. Un esempio è qui sotto.


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Vincitore #" .. playerRank .. " è " .. playerName)
end

Quando eseguito, il codice stamperà quanto segue:


Vincitore #1 è Ali
Vincitore #2 è Ben
Vincitore #3 è Cammy

Esercizio - Simulatore di Zuppa da Ristorante

Creiamo della zuppa per un simulatore di ristorante dove i giocatori scelgono da un elenco di possibili ingredienti per la zuppa. Gli ingredienti saranno memorizzati come chiavi, e i valori inizieranno come false così che i giocatori ottengano solo ciò che selezionano.

Usa pairs() per vedere cosa è stato scelto, e poi ipairs() per stampare l'elenco degli ingredienti.

  1. Crea un nuovo dizionario chiamato menu. Aggiungi 3 - 5 coppie chiave-valore dove la chiave è l'ingrediente e il valore è false.


    local menu = {
    cavolo = false,
    manzo = false,
    tomato = false,
    vermicelli = false,
    }
  2. Sotto il dizionario del menu, aggiungi un array vuoto che sarà riempito con le scelte del cliente in seguito.


    -- Zuppa del cliente
    local selectedIngredients = {}
  3. Usa pairs() per controllare se ciascun ingrediente nel dizionario è contrassegnato come true o false. Se true, aggiungi l'ingrediente alla zuppa.


    -- Zuppa del cliente
    local selectedIngredients = {}
    -- Aggiunge le scelte del cliente alla loro zuppa
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Ripeti l'ordine al cliente. Nello script, codifica quanto segue sotto.

    • Controlla se ci sono articoli del menu in selectedIngredients. Se sì, stampa "Hai ordinato zuppa con: ".
    • Usa ipairs() per attraversare l'array selectedIngredients e stampare ogni ingrediente.
    • Testa cambiando almeno un articolo del menu in true.

    -- Stampa l'ordine della zuppa da "selectedIngredients"
    if #selectedIngredients > 0 then
    print("Hai ordinato zuppa con: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. Nella dichiarazione if che controlla se ci sono articoli del menu, aggiungi una condizione else che informa i clienti se non sono stati selezionati ingredienti.


    if #selectedIngredients > 0 then
    print("Hai ordinato zuppa con: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Niente è stato selezionato. Non hai fame?")
    end

Sfide opzionali

Di seguito ci sono alcune sfide che si applicano utilizzando pairs e ipairs in modi diversi. Prova a vedere se riesci a costruire il codice per questi.

Sfida: Crea un NPC Cameriere Invece di utilizzare la finestra di Output, usa l'NPC di Introduzione agli Array per creare un cameriere che prenda gli ordini dei clienti.

Sfida: Consenti ai Giocatori di Fare Ordini Consenti ai giocatori di selezionare un ingrediente toccando un pezzo fisico come un prompt di prossimità. Per ulteriori informazioni, vedi Prompt di Prossimità.

Sfida Avanzata: Crea un Simulatore di Zuppa Crea un simulatore di ristorante dove i giocatori sono gli chef! I giocatori dovranno mettere insieme ingredienti per corrispondere all'ordine dato loro dal cameriere.

  1. Crea oggetti di gioco per 3 - 5 ingredienti diversi.
  2. Crea 3 - 5 ricette usando dizionari analoghi a quello in questa lezione.
  3. Crea un array che contenga tutte le ricette.
  4. Seleziona casualmente una ricetta e usa un NPC per dire ai giocatori quali sono gli ingredienti.
  5. Crea un nuovo dizionario per fare una ricetta basata sugli ingredienti che il giocatore tocca.
  6. Confronta la ricetta del giocatore con la ricetta scelta dall'NPC.
  7. Aumenta la sfida aggiungendo una condizione extra, come un timer.
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.