table.sort med sammenligningsfunksjoner
Sorter tabeller med egendefinerte sammenligningsfunksjoner og strategier for stabil sortering.
table.sort med sammenligningsfunksjoner er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.
Hva er table.sort?
table.sort sorterer en tabell på stedet ved hjelp av en sammenligningsfunksjon. Uten en sammenligningsfunksjon bruker den operatoren <.
Standard sortering stigende
Kall table.sort(t) på en tabell med tall eller strenger for å sortere stigende.
local nums = {5, 2, 8, 1, 9}
table.sort(nums)
for _, v in ipairs(nums) do print(v) endEgendefinert sammenligningsfunksjon
Send en funksjon function(a, b) return a < b end som det andre argumentet.
local words = {"banana", "apple", "cherry"}
table.sort(words, function(a, b) return a < b end)
print(table.concat(words, ", "))Sortering synkende
Vend om sammenligningen for å sortere i synkende rekkefølge.
local nums = {3, 1, 4, 1, 5, 9}
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))Sortere tabeller etter et felt
Sorter en rekke med poster etter en bestemt feltnøkkel.
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) endSortering med flere nøkler
Sorter etter en primærnøkkel og deretter etter en sekundærnøkkel ved like verdier.
table.sort(people, function(a, b)
if a.age ~= b.age then return a.age < b.age end
return a.name < b.name
end)Merknad om stabilitet
Luas table.sort er ikke garantert stabil. Like elementer kan vises i hvilken som helst rekkefølge. Bruk en indeks som tie-breaker for deterministiske resultater.
Sortere strenger uten hensyn til store og små bokstaver
Normaliser med string.lower inne i sammenligningsfunksjonen.
table.sort(words, function(a, b)
return a:lower() < b:lower()
end)Sortering med nøkkeluttrekker
Bufre uttrekte nøkler for å unngå gjentatte beregninger under sorteringen, ved hjelp av en Schwartzian-transformasjon.
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
endSortere store tabeller
For svært store tabeller bør du vurdere en Schwartzian-transformasjon: Koble hvert element sammen med sorteringsnøkkelen, sorter og hent deretter ut elementene. Da unngår du å beregne nøkkelen på nytt ved hver sammenligning.
På stedet kontra kopi
table.sort endrer den opprinnelige tabellen. Hvis du vil sortere en kopi, bruker du først table.move eller itererer for å klone tabellen, og sorterer deretter klonen.
Sammenligningsspørsmål
Hvilken sammenligningsfunksjon sorterer tall i stigende rekkefølge?
Oppsummering: table.sort
table.sort sorterer på stedet, godtar en valgfri sammenligningsfunksjon, er ikke stabil og brukes ofte med feltbaserte strategier eller strategier med flere nøkler for komplekse sorteringskrav.
Lær deg Lua med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 40
- Leksjoner
- 159
Ofte stilte spørsmål
Er leksjonen «table.sort med sammenligningsfunksjoner» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «table.sort med sammenligningsfunksjoner», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «table.sort med sammenligningsfunksjoner»?
Sorter tabeller med egendefinerte sammenligningsfunksjoner og strategier for stabil sortering. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lua Academy?
Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «table.sort med sammenligningsfunksjoner»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?
Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- table.sort med sammenligningsfunksjoner
- table.concat og table.move
- Dyp og grunn kopiering
- Transformere tabeller: map, filter, reduce