table.sort()
Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 7 / 54.
Liste stili tablolarla çalışırken, verileri genellikle belirli bir sıraya göre düzenlemeniz gerekecektir. Lua, tablo öğelerini yerinde düzenlemek için table.sort() fonksiyonunu sağlar; bu da yeni bir tablo oluşturmak yerine orijinal tabloyu değiştirdiği anlamına gelir.
Temel sözdizimi oldukça basittir:
table.sort(myTable)Varsayılan olarak, table.sort() sayıları artan düzende ve dizeleri alfabetik olarak sıralar. İşte bir puan listesi içeren bir örnek:
local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores artık {42, 55, 67, 85, 91}Dizeler için sıralama alfabetik sırayı takip eder:
local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names artık {"Alice", "Bob", "Charlie"} şeklindedirBazen varsayılan sıralama ihtiyacınız olan şey değildir. Öğelerin nasıl karşılaştırılacağını kontrol etmek için ikinci bir argüman olarak özel bir karşılaştırma fonksiyonu sağlayabilirsiniz. Bu fonksiyon iki öğe alır ve ilki ikincisinden önce gelmeliyse true değerini döndürür:
local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
return a > b -- Azalan sırada sırala
end)
-- numbers artık {8, 5, 2, 1}table.sort() fonksiyonu, yalnızca 1'den başlayan ardışık tam sayı anahtarlarına sahip liste stili tablolarla çalışır. Verileri görüntülemeden veya belirli bir sırayla işlemeden önce düzenlemek için güçlü bir araçtır.
Görev
KolayBir scores tablosu alan ve azalan düzende sıralanmış puanlardan oluşan biçimlendirilmiş bir dize döndüren bir sortScoresDescending fonksiyonu yazın.
Puanları en yüksekten en düşüğe doğru düzenlemek için özel bir karşılaştırma fonksiyonuyla table.sort() kullanın, ardından bunları virgülle ayrılmış tek bir dize halinde birleştirmek için table.concat() kullanın.
Parametreler:
scores(tablo): Sayısal puanlar içeren liste stilinde bir tablo
Dönüş Değeri: En yüksekten en düşüğe doğru sıralanmış, virgülle ayrılmış puanları içeren bir dize. Biçim: 95,87,76,54
Kopya kağıdı
table.sort() fonksiyonu, tablo öğelerini yerinde düzenleyerek orijinal tabloyu değiştirir:
table.sort(myTable)Varsayılan olarak, sayıları artan düzende ve dizeleri alfabetik olarak sıralar:
local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores artık {42, 55, 67, 85, 91} şeklindedir
local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names artık {"Alice", "Bob", "Charlie"} şeklindedirİkinci bir argüman olarak özel bir karşılaştırma fonksiyonu sağlayabilirsiniz. Fonksiyon iki öğe alır ve birincinin ikinciden önce gelmesi gerekiyorsa true döndürür:
local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
return a > b -- Azalan düzende sırala
end)
-- numbers artık {8, 5, 2, 1} şeklindedirtable.sort() yalnızca 1'den başlayan ardışık tam sayı anahtarlarına sahip liste stili tablolarla çalışır.
Kendin dene
function sortScoresDescending(scores)
-- Kodu buraya yazın
end
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow bölümündeki tüm dersler
1İleri Düzey Tablo Yineleme
pairs() ile Yinelemeipairs() ile Yinelemepairs() vs. ipairs()Özet - Karakter Sayfası2Daha Fazla Tablo Kütüphanesi Fonksiyonu
table.concat()Tablo Oluşturma ve unpack()table.sort()Fonksiyonlar ile Özel SıralamaÖzet - Yüksek Skor Tablosu