Menu
Coddy logo textTech

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"} şeklindedir

Bazen 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.

challenge icon

Görev

Kolay

Bir 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} şeklindedir

table.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
quiz iconKendini test et

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