table.sort con comparatori
Ordini le tabelle con funzioni comparatore personalizzate e strategie di ordinamento stabile.
table.sort con comparatori è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Che cos'è table.sort?
table.sort ordina una tabella sul posto utilizzando una funzione di confronto. In assenza di un comparatore, utilizza l'operatore <.
Ordinamento crescente predefinito
Chiami table.sort(t) su una tabella di numeri o stringhe per ordinarla in senso crescente.
local nums = {5, 2, 8, 1, 9}
table.sort(nums)
for _, v in ipairs(nums) do print(v) endComparatore personalizzato
Passi come secondo argomento una funzione function(a, b) return a < b end.
local words = {"banana", "apple", "cherry"}
table.sort(words, function(a, b) return a < b end)
print(table.concat(words, ", "))Ordinamento decrescente
Inverta il confronto per ordinare in senso decrescente.
local nums = {3, 1, 4, 1, 5, 9}
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))Ordinare le tabelle in base a un campo
Ordini un array di record in base a una specifica chiave di campo.
local people = {
{name="Charlie", age=30},
{name="Alice", age=25},
{name="Bob", age=28}
}
table.sort(people, function(a, b) return a.age < b.age end)
for _, p in ipairs(people) do print(p.name, p.age) endOrdinamento con più chiavi
Ordini in base a una chiave primaria e, in caso di parità, a una chiave secondaria.
table.sort(people, function(a, b)
if a.age ~= b.age then return a.age < b.age end
return a.name < b.name
end)Nota sulla stabilità
table.sort di Lua non garantisce la stabilità. Gli elementi equivalenti possono comparire in qualsiasi ordine. Utilizzi un indice come criterio di spareggio per ottenere risultati deterministici.
Ordinamento delle stringhe senza distinzione tra maiuscole e minuscole
Normalizzi con string.lower all'interno del comparatore.
table.sort(words, function(a, b)
return a:lower() < b:lower()
end)Ordinamento con estrattore di chiavi
Memorizzi nella cache le chiavi estratte per evitare calcoli ripetuti durante l'ordinamento, utilizzando un approccio basato sulla trasformazione di Schwartz.
local function sortBy(t, keyFn)
local keyed = {}
for i, v in ipairs(t) do keyed[i] = {val=v, key=keyFn(v)} end
table.sort(keyed, function(a, b) return a.key < b.key end)
for i, item in ipairs(keyed) do t[i] = item.val end
endOrdinamento di tabelle di grandi dimensioni
Per tabelle molto grandi, valuti una trasformazione di Schwartz: associ ogni elemento alla relativa chiave di ordinamento, ordini le coppie e infine estragga gli elementi. In questo modo evita di ricalcolare la chiave a ogni confronto.
Sul posto o su una copia
table.sort modifica la tabella originale. Per ordinare una copia, utilizzi prima table.move oppure esegua un'iterazione per crearne un clone, quindi ordini il clone.
Domanda sul comparatore
Quale comparatore ordina i numeri in senso crescente?
Riepilogo: table.sort
table.sort ordina sul posto, accetta un comparatore opzionale, non è stabile e viene comunemente utilizzato con strategie basate sui campi o su più chiavi per gestire requisiti di ordinamento complessi.
Domande Frequenti
La lezione «table.sort con comparatori» è gratuita?
Sì — il testo completo di «table.sort con comparatori» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «table.sort con comparatori»?
Ordini le tabelle con funzioni comparatore personalizzate e strategie di ordinamento stabile. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «table.sort con comparatori»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- table.sort con comparatori
- table.concat e table.move
- Copia profonda e copia superficiale
- Trasformazione delle tabelle: map, filter, reduce