Fonksiyonlar ile Özel Sıralama
Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 8 / 54.
table.sort() basit sayı veya dize listeleri için harika çalışsa da, gerçek dünyadaki veriler genellikle daha karmaşıktır. Her girişin kendisinin birden fazla alana sahip 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() fonksiyonuna iki girdiyi tam olarak nasıl karşılaştıracağını söylemeniz gerekir. Özel karşılaştırma fonksiyonlarının gerekli hale geldiği yer burasıdır. Bir karşılaştırma fonksiyonu iki öğe alır ve eğer birincisi sıralama düzeninde ikincisinden önce gelmeliyse true değerini döndürür.
İşte oyuncu kayıtlarını içeren bir tablo örneği:
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, players tablosu skora göre azalan düzende sıralanacaktır; Bob birinci (200), Charlie ikinci (175) ve Alice üçüncü (150) olacaktır. Karşılaştırma fonksiyonu, sıralarını belirlemek için her bir oyuncu tablosunun score alanına erişir.
İstediğiniz herhangi bir alana göre sıralama yapabilirsiniz; isimleri alfabetik olarak, seviyeleri sayısal olarak veya hatta birden fazla kriteri birleştirebilirsiniz.
Kopya kağıdı
Karmaşık veri yapılarına sahip tabloları sıralamak için table.sort() ile özel bir karşılaştırma fonksiyonu kullanın. Karşılaştırma fonksiyonu iki öğe alır ve birincinin ikinciden önce gelmesi gerekiyorsa true döndürür.
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)Bu, oyuncuları puana göre azalan düzende sıralar. Tablo yapısındaki herhangi bir alana göre sıralama yapabilirsiniz.
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.
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