Iterare con pairs()
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 1 di 54.
pairs() lo rende possibile consentendoti di scorrere tutte le voci di una tabella, indipendentemente dal tipo delle chiavi.La sintassi per usare pairs() in un ciclo for è questa:for key, value in pairs(myTable) do
-- usa key e value qui
endpairs() fornisce sia la chiave sia il valore corrispondente. Questo significa che puoi accedere a entrambe le informazioni e lavorarci contemporaneamente.Ecco un esempio pratico con l'inventario di un giocatore:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() funziona con qualsiasi tipo di chiave, incluse stringhe, numeri o persino altre tabelle.Per la sfida: creare una stringaLa sfida qui sotto ti chiede di restituire ogni voce come un'unica stringa, quindi ecco un ripasso di due strumenti per le stringhe trattati in Fundamentals. Unisci le stringhe con l'operatore di concatenazione, composto da due punti (..). Per esempio, "Hello" .. " " .. "World" restituisce "Hello World".Se devi formattare il testo su più righe, puoi usare il carattere di escape per la nuova riga, "\n". Quando Lua incontra "\n" all'interno di una stringa, lo interpreta come un comando per passare alla riga successiva.Per esempio, print("Line 1\nLine 2") produrrà:Line 1
Line 2Sfida
FacileScrivi una funzione printInventory che accetta una tabella inventory e restituisce una stringa formattata che elenca tutti gli articoli e le relative quantità.
Usa pairs() per scorrere la tabella dell'inventario e creare una stringa in cui ogni riga mostra il nome di un articolo seguito dalla sua quantità nel formato item: quantity. Ogni articolo deve trovarsi su una riga separata.
Per mettere ogni articolo sulla propria riga, usa il carattere di nuova riga "\n" tra gli elementi. Per esempio, "apple: 5\nbanana: 3" verrà visualizzato su due righe separate. Fai attenzione a non aggiungere un "\n" iniziale prima del primo articolo: aggiungilo solo tra gli articoli.
Parametri:
inventory(tabella): una tabella in stile dizionario in cui le chiavi sono i nomi degli articoli (stringhe) e i valori sono le quantità (numeri)
Restituisce: una stringa con ogni articolo e la relativa quantità su una riga separata, separati da "\n". Esempio di output per {apple=5, banana=3}:apple: 5banana: 3
Provalo tu
function printInventory(inventory)
-- Per formattare l'output, puoi concatenare le stringhe usando l'operatore '..'.
-- Per andare a capo, usa il carattere speciale '\n'.
-- Potresti aver bisogno di un modo per tenere traccia del fatto che stai aggiungendo il primo elemento o uno successivo
-- per decidere se aggiungere un'interruzione di riga prima dell'elemento.
-- Scrivi il codice qui
endQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Iterazione avanzata delle tabelle
Iterare con pairs()Iterare con ipairs()pairs() vs. ipairs()Riepilogo - Scheda del personaggio2Altre funzioni della libreria table
table.concat()Costruzione di tabelle e unpack()table.sort()Ordinamento personalizzato con funzioniRiepilogo - Tabellone dei punteggi più altiEsercitati da solo: Compilatore Lua online