Menu
Coddy logo textTech

pairs() vs. ipairs()

Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 3 di 54.

Ora che hai imparato sia pairs() sia ipairs(), è importante capire quando usare ciascuno. La scelta dipende interamente dalla struttura della tua tabella e da ciò che stai cercando di ottenere.

Usa ipairs() quando hai una tabella in stile lista con chiavi intere sequenziali a partire da 1. Elabora gli elementi in ordine e si ferma al primo valore nil, rendendolo perfetto per gli array in cui l’ordine è importante.

Usa pairs() quando la tua tabella ha chiavi stringa, tipi di chiave misti o quando devi accedere a tutte le voci indipendentemente dagli spazi vuoti. Scorre tutte le coppie chiave-valore nella tabella senza un ordine specifico.

Considera questa tabella mista:

local gameData = {
    "Level 1",
    "Level 2", 
    "Level 3",
    currentLevel = 2,
    playerName = "Hero"
}

Se usi ipairs(), vedrai solo le tre stringhe di livello. Se usi pairs(), vedrai tutte e cinque le voci, comprese le chiavi stringa.

challenge icon

Sfida

Facile

Scrivi una funzione countSequentialItems che accetta una tabella data e restituisce il conteggio degli elementi con chiavi intere sequenziali.

Usa ipairs() per contare quanti elementi sono presenti nella parte sequenziale della tabella (a partire dall'indice 1 fino al primo nil). Questo ti aiuterà a capire la differenza tra ipairs() e pairs() quando lavori con tabelle miste.

Parametri:

  • data (tabella): una tabella mista contenente sia chiavi intere sequenziali sia chiavi stringa

Restituisce: il numero di elementi sequenziali (numero)

Provalo tu

function countSequentialItems(data)
    -- Write code here
end
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Lua online