pairs() ile Yineleme
Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 1 / 54.
pairs() işlevi, anahtarların türü ne olursa olsun tablodaki tüm girdiler üzerinde döngü kurmanıza olanak tanıyarak bunu mümkün kılar.Bir for döngüsünde pairs() kullanmanın sözdizimi şöyledir:for key, value in pairs(myTable) do
-- key ve value değişkenlerini burada kullan
endpairs() hem anahtarı hem de ona karşılık gelen değeri sağlar. Bu, her iki bilgi parçasına aynı anda erişip bunlarla çalışabileceğin anlamına gelir.İşte bir oyuncunun envanterini içeren pratik bir örnek:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() işlevi dizeler, sayılar ve hatta diğer tablolar da dahil olmak üzere her tür anahtarla çalışır.Görev: bir dize oluşturmaAşağıdaki alıştırma, her girdiyi tek bir metin olarak döndürmeni istiyor; bu yüzden Temel Bilgiler bölümündeki iki metin aracını hatırlayalım. Metinleri, iki nokta işaretinden oluşan birleştirme işleciyle birleştirirsin (..). Örneğin, "Hello" .. " " .. "World" ifadesinin sonucu "Hello World" olur.Metni birden fazla satıra biçimlendirmen gerekiyorsa yeni satır kaçış karakteri "\n" kullanabilirsin. Lua, bir dizenin içinde "\n" ile karşılaştığında bunu sonraki satıra geçme komutu olarak yorumlar.Örneğin, print("Line 1\nLine 2") çıktısı şöyle olacaktır:Line 1
Line 2Görev
Kolayinventory tablosunu alan ve tüm öğeleri miktarlarıyla birlikte listeleyen biçimlendirilmiş bir dize döndüren bir printInventory işlevi yazın.
Envanter tablosunda yineleme yapmak ve her satırda bir öğe adının ardından miktarının item: quantity biçiminde gösterildiği bir dize oluşturmak için pairs() kullanın. Her öğe ayrı bir satırda olmalıdır.
Her öğeyi kendi satırına yerleştirmek için girdiler arasına satır sonu karakteri "\n" ekleyin. Örneğin, "apple: 5\nbanana: 3" iki ayrı satır olarak görüntülenir. İlk öğeden önce başında "\n" olacak şekilde ekleme yapmamaya dikkat edin: bunu yalnızca öğelerin arasına ekleyin.
Parametreler:
inventory(table): Anahtarları öğe adları (dizeler), değerleri ise miktarlar (sayılar) olan sözlük tarzı bir tablo
Döndürür: Her öğenin ve miktarının ayrı bir satırda gösterildiği, satırların "\n" ile ayrıldığı bir dize. {apple=5, banana=3} için örnek çıktı:apple: 5banana: 3
Kendin dene
function printInventory(inventory)
-- Çıktıyı biçimlendirmek için '..' operatörünü kullanarak dizeleri birleştirebilirsiniz.
-- Yeni bir satır eklemek için '\n' özel karakterini kullanın.
-- İlk öğeyi mi yoksa sonraki öğelerden birini mi eklediğinizi takip etmenin bir yoluna ihtiyacınız olabilir
-- böylece öğeden önce yeni bir satır ekleyip eklemeyeceğinize karar verebilirsiniz.
-- Kodu buraya yazın
endBu 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