table.sort med jämförelsefunktioner
Sortera tabeller med anpassade jämförelsefunktioner och strategier för stabil sortering.
table.sort med jämförelsefunktioner är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.
Vad är table.sort?
table.sort sorterar en tabell på plats med hjälp av en jämförelsefunktion. Utan jämförelsefunktion används operatorn <.
Standardmässig stigande sortering
Anropa table.sort(t) på en tabell med tal eller strängar för att sortera i stigande ordning.
local nums = {5, 2, 8, 1, 9}
table.sort(nums)
for _, v in ipairs(nums) do print(v) endAnpassad jämförelsefunktion
Skicka en funktion, function(a, b) return a < b end, som det andra argumentet.
local words = {"banana", "apple", "cherry"}
table.sort(words, function(a, b) return a < b end)
print(table.concat(words, ", "))Fallande sortering
Vänd på jämförelsen för att sortera i fallande ordning.
local nums = {3, 1, 4, 1, 5, 9}
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))Sortera tabeller efter ett fält
Sortera en array med poster efter en specifik fält-nyckel.
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 efter flera nycklar
Sortera efter en primär nyckel och sedan efter en sekundär nyckel vid lika värden.
table.sort(people, function(a, b)
if a.age ~= b.age then return a.age < b.age end
return a.name < b.name
end)Anmärkning om stabilitet
Luas table.sort är inte garanterat stabil. Element med samma värde kan hamna i valfri ordning. Använd ett index som skiljande kriterium för deterministiska resultat.
Sortera strängar utan hänsyn till skiftläge
Normalisera med string.lower i jämförelsefunktionen.
table.sort(words, function(a, b)
return a:lower() < b:lower()
end)Sortering med nyckelutdragare
Cachelagra utdragna nycklar för att undvika upprepade beräkningar under sorteringen genom att använda en Schwartzian-transform.
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
endSortera stora tabeller
För mycket stora tabeller kan du använda en Schwartzian-transform: para ihop varje element med sin sorteringsnyckel, sortera och extrahera sedan elementen. Då behöver nyckeln inte beräknas om vid varje jämförelse.
På plats kontra kopia
table.sort ändrar den ursprungliga tabellen. Om du vill sortera en kopia använder du först table.move eller itererar för att skapa en klon och sorterar sedan klonen.
Jämförelsefunktionsfråga
Vilken jämförelsefunktion sorterar tal i stigande ordning?
Sammanfattning: table.sort
table.sort sorterar på plats, tar emot en valfri jämförelsefunktion, är inte stabil och används ofta med fältbaserade strategier eller strategier med flera nycklar för komplexa sorteringskrav.
Lär dig Lua med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”table.sort med jämförelsefunktioner” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”table.sort med jämförelsefunktioner”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”table.sort med jämförelsefunktioner”?
Sortera tabeller med anpassade jämförelsefunktioner och strategier för stabil sortering. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lua Academy?
Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”table.sort med jämförelsefunktioner”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lua Academy-lektionen?
Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- table.sort med jämförelsefunktioner
- table.concat och table.move
- Djup kopiering och grund kopiering
- Omforma tabeller: map, filter, reduce