Fonksiyonlar ile Özel Sıralama
Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 8 / 54.
table.sort() basit sayı veya dize listelerinde harika çalışsa da gerçek dünya verileri genellikle daha karmaşıktır. Her girdinin birden fazla alana sahip kendi başına bir tablo olduğu oyuncu kayıtları, envanter öğeleri veya oyun skorlarından oluşan bir tablonuz olabilir.
Bu karmaşık yapıları sıralamak için table.sort() işlevine iki girdinin nasıl karşılaştırılacağını tam olarak belirtmeniz gerekir. Özel karşılaştırma işlevleri burada vazgeçilmez hâle gelir. Bir karşılaştırma işlevi iki öğe alır ve sıralanmış düzende birincinin ikinciden önce gelmesi gerekiyorsa true döndürür.
İşte oyuncu kayıtlarından oluşan bir tabloyla ilgili bir örnek:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)Sıralamadan sonra oyuncular tablosu, puana göre azalan sırada düzenlenecek; Bob birinci (200), Charlie ikinci (175) ve Alice üçüncü (150) olacaktır. Karşılaştırma işlevi, sıralarını belirlemek için her oyuncu tablosunun score alanına erişir.
İstediğiniz herhangi bir alana göre sıralama yapabilirsiniz: adları alfabetik olarak, seviyeleri sayısal olarak sıralayabilir veya birden çok ölçütü bile birleştirebilirsiniz.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
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 TablosuKendi başına pratik yap: Online Lua derleyicisi