Menu
Coddy logo textTech

Ordinamento personalizzato con funzioni

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

Se table.sort() funziona alla grande per semplici liste di numeri o stringhe, i dati del mondo reale sono spesso più complessi. Potresti avere una tabella di record di giocatori, articoli di inventario o punteggi di gioco, in cui ogni voce è a sua volta una tabella con più campi.

Per ordinare queste strutture complesse, devi indicare a table.sort() esattamente come confrontare due voci. È qui che le funzioni di confronto personalizzate diventano essenziali. Una funzione di confronto prende due elementi e restituisce true se il primo deve precedere il secondo nell'ordine ordinato.

Ecco un esempio con una tabella di record dei giocatori:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

Dopo l'ordinamento, la tabella dei giocatori sarà ordinata per punteggio in ordine decrescente, con Bob al primo posto (200), Charlie al secondo (175) e Alice al terzo (150). La funzione di confronto accede al campo score di ciascuna tabella dei giocatori per determinarne l'ordine.

Puoi ordinare in base al campo che preferisci: i nomi in ordine alfabetico, i livelli in ordine numerico o persino combinare più criteri.

Provalo tu

Questa lezione non include una sfida di codice.

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