table.sort()
Coddy'nin Lua Journey'sinin Mantık ve Akış 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
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.
Mantık ve Akış 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