Menu
CoddyTech

Dizin İmzaları

Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 78 / 80.

Tablolar bölümünde daha önce {[string]: number} gibi eşleme türleriyle karşılaştın: bir indeks imzası; herhangi bir dizge anahtarı bir sayı değerine eşlenir. Kod yazarken anahtarlar henüz bilinmiyorsa bunlar çok işe yarar: sayaçlar, ayarlar, önbellekler, puanlar; çalışma zamanında oluşturulan her şey.

type Counts = {[string]: number}

local counts: Counts = {}
counts["potion"] = 3   -- herhangi bir string anahtar kullanılabilir
counts["sword"] = 1
counts["potion"] += 1  -- değerler sayı olarak kontrol edilir

Eşlemelerle çalışırken çalışma zamanına ilişkin iki gerçek önemlidir. İlk olarak, hiç ayarlanmamış bir anahtarı okumak nil döndürür: klasik sayma kalıbı, "eksik" değeri 0'a dönüştürerek bunu or ile ele alır:

counts[item] = (counts[item] or 0) + 1

İkinci olarak, pairs() bir eşlemenin anahtarları üzerinde garanti edilmiş bir sıralama olmadan yinelenir: aynı programı iki kez çalıştırmak, anahtarları farklı sırada ziyaret edebilir. Çıktının öngörülebilir olması gerektiğinde anahtarları bir diziye topla, table.sort ile sırala ve bunun yerine sıralanmış dizi üzerinde yinele:

local keys: {string} = {}
for key in pairs(counts) do
    table.insert(keys, key)
end
table.sort(keys)
for _, key in ipairs(keys) do
    print(`{key}: {counts[key]}`)
end
challenge icon

Görev

Kolay

Adlarını önceden bilmediğiniz oyuncuların puanlarını saklayın.

  1. type Scores = {[string]: number} yazın ve local scores: Scores = {} oluşturun.
  2. Puan ekleyin: scores["mia"] = (scores["mia"] or 0) + 5, ardından "leo" için de aynısını 3 ile yapın.
  3. scores["mia"], scores["leo"] ve scores["zed"] değerlerini yazdırın.

Kodu Çalıştır düğmesine basın: çıktı 5, 3 ve nil değerlerini gösterir.

Kendin dene

-- 1) type Scores = {[string]: number}, ardından local scores: Scores = {}
-- 2) "mia" için 5, "leo" için 3 puan ekle
-- 3) mia, leo ve zed değerlerini yazdır

Luau'ya Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online Luau derleyicisi