table.sort()
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 7 di 54.
Quando lavori con tabelle in stile lista, spesso dovrai organizzare i dati in un ordine specifico. Lua fornisce la funzione table.sort() per ordinare gli elementi della tabella sul posto, cioè modificando la tabella originale anziché crearne una nuova.
La sintassi di base è semplice:
table.sort(myTable)Per impostazione predefinita, table.sort() dispone i numeri in ordine crescente e le stringhe in ordine alfabetico. Ecco un esempio con un elenco di punteggi:
local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores ora è {42, 55, 67, 85, 91}Per le stringhe, l'ordinamento segue l'ordine alfabetico:
local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names ora è {"Alice", "Bob", "Charlie"}A volte l'ordinamento predefinito non è quello che ti serve. Puoi fornire una funzione di confronto personalizzata come secondo argomento per controllare come vengono confrontati gli elementi. Questa funzione accetta due elementi e restituisce true se il primo deve precedere il secondo:
local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
return a > b -- Ordina in ordine decrescente
end)
-- numbers ora è {8, 5, 2, 1}La funzione table.sort() funziona solo con tabelle in stile lista che hanno chiavi intere sequenziali a partire da 1. È uno strumento potente per organizzare i dati prima di visualizzarli o elaborarli in un ordine specifico.
Sfida
FacileScrivi una funzione sortScoresDescending che accetta una tabella scores e restituisce una stringa formattata con i punteggi ordinati in ordine decrescente.
Usa table.sort() con una funzione di confronto personalizzata per disporre i punteggi dal più alto al più basso, poi usa table.concat() per unirli in un'unica stringa separata da virgole.
Parametri:
scores(tabella): una tabella in stile lista contenente punteggi numerici
Restituisce: una stringa con i punteggi ordinati dal più alto al più basso, separati da virgole. Formato: 95,87,76,54
Provalo tu
function sortScoresDescending(scores)
-- Escribe el código aquí
end
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