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.
Questa 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