pairs ve ipairs

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Birçok betik sıklıkla sözlükler veya diziler üzerinden geçmek zorunda kalır. Ancak bazen, bu veri yapılarının başlangıç ve bitiş noktalarını bilmeyebilirsiniz. Örneğin, oyuncuların bir sözlüğü değişiyor olabilir veya oyuncuların çeşitlilik gösteren boyutlarda bir dizi envanteri olabilir.

Bu durumlarda pairs() ve ipairs() kullanabilirsiniz. Bunlar, başlangıç ve bitiş noktaları bilinmeden her bir öğeyi gözden geçirmek için bir for döngüsü ile kullanılabilir.

Bu makale, bunları nasıl kullanacağınızı kapsamaktadır ve bir yemek pişirme oyununda restoran siparişlerini takip ettiğiniz pratik bir betik örneği sunmaktadır.

Sözlükler ve pairs()

pairs() sözlüklerle kullanılır. Aşağıda bir örnek görülmektedir.


local myDictionary = {
["Mavi Oyuncu"] = "Ana",
["Altın Oyuncu"] = "Binh",
["Kırmızı Oyuncu"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " " .. value .. "dır.")
end

pairs() bir sözlük elemanının anahtarı, değeri veya her ikisi ile çalışmak için kullanılabilir. Aşağıdaki for döngüsünde, ilk değişken anahtar. İkinci değişken değerdir. Çalışmak istediğiniz sözlük pairs() fonksiyonuna geçirilir.


local inventory = {
["Altın Tuğlalar"] = 43,
Havuçlar = 3,
Meşaleler = 2,
}
print("Sizde var:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Çalıştırıldığında, kod aşağıdakileri yazdıracaktır:


Sizde var:
43 Altın Tuğlalar
3 Havuçlar
2 Meşaleler

Diziler ve ipairs()

ipairs() dizilerle kullanılır. ipairs() içindeki "i" "indeks" anlamına gelir. İndeksleri kullanarak işlenecek sıralı değerler gibi lider panoları için ipairs() ve dizileri birlikte kullanın. Aşağıda bir örnek bulunmaktadır.


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Kazanan #" .. playerRank .. " " .. playerName .. "dır.")
end

Çalıştırıldığında, kod aşağıdakileri yazdıracaktır:


Kazanan #1 Ali'dir.
Kazanan #2 Ben'dir.
Kazanan #3 Cammy'dir.

Uygulama - Restoran Çorbası Simülatörü

Oyuncuların muhtemel çorba malzemeleri listesinden seçim yaptığı bir restoran simülatörü için biraz çorba yapalım. Malzemeler anahtar olarak depolanacak ve değerler başlangıçta false olacak, böylece oyuncular yalnızca seçtikleri şeyi alacaklar.

Ne seçildiğini görmek için pairs() kullanın ve ardından malzemelerin listesini yazdırmak için ipairs() kullanın.

  1. menu adında yeni bir sözlük oluşturun. Anahtarın malzeme ve değerin false olduğu 3 - 5 anahtar-değer çifti ekleyin.


    local menu = {
    lahana = false,
    et = false,
    domates = false,
    erişte = false,
    }
  2. Menü sözlüğünün altına, müşteri seçimleri daha sonra doldurulacak boş bir dizi ekleyin.


    -- Müşterinin çorbası
    local selectedIngredients = {}
  3. Sözlükteki her malzemenin true veya false olarak işaretlenip işaretlenmediğini kontrol etmek için pairs() kullanın. Eğer true ise, malzemeyi çorbaya ekleyin.


    -- Müşterinin çorbası
    local selectedIngredients = {}
    -- Müşterinin seçimlerini çorbasına ekler
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Siparişi müşteriye tekrar edin. Betikte, aşağıdakileri aşağıya kodlayın.

    • selectedIngredients içinde bir menü maddesi olup olmadığını kontrol edin. Eğer varsa, "Şu malzemelerle çorba sipariş ettiniz: " yazdırın.
    • selectedIngredients dizisini ipairs() kullanarak gözden geçirin ve her bir malzemeyi yazdırın.
    • En az bir menü maddesini true yaparak test edin.

    -- "selectedIngredients" içindeki çorba siparişini yazdırır
    if #selectedIngredients > 0 then
    print("Şu malzemelerle çorba sipariş ettiniz: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. Menü maddesinin olup olmadığını kontrol eden if ifadesine, müşterilere hiçbir malzeme seçilmediğini bildiren bir else durumu ekleyin.


    if #selectedIngredients > 0 then
    print("Şu malzemelerle çorba sipariş ettiniz: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Hiçbir şey seçilmedi. Aç değil misiniz?")
    end

Opsiyonel zorluklar

Aşağıda, farklı şekillerde pairs ve ipairs kullanarak uygulayabileceğiniz bazı zorluklar bulunmaktadır. Bunları kodlayıp kodlayamayacağınızı görün.

Zorluk: Garson NPC'si Oluşturun Çıkış penceresini yerine, Dizilere Giriş bölümünde NPC’yi kullanarak siparişleri almak için bir garson oluşturun.

Zorluk: Oyuncuların Sipariş Vermesine İzin Verin Oyuncuların fiziksel bir parçaya dokunarak bir malzeme seçmesine izin verin, örneğin bir yakınlık istemi. Daha fazla bilgi için Yakınlık İstemleri bölümüne bakın.

İleri Düzey Zorluk: Bana Biraz Çorba Simülatörü Yap Oyuncuların şef olduğu bir restoran simülatörü oluşturun! Oyuncular, garson tarafından kendilerine verilen siparişle eşleşen malzemeleri bir araya getirmek zorunda kalacaklar.

  1. 3 - 5 farklı malzeme için oyun içi nesneler oluşturun.
  2. Bu derste bulunanlarla benzer sözlükler kullanarak 3 - 5 tarif oluşturun.
  3. Tüm tarifleri tutan bir dizi oluşturun.
  4. Rastgele bir tarif seçin ve oyunculara malzemelerin ne olduğunu söylemek için bir NPC kullanın.
  5. Oyuncunun dokunduğu nesnelerin tarifine dayalı olarak yeni bir tarif oluşturmak için yeni bir sözlük oluşturun.
  6. Oyuncunun tarifini NPC'nin seçtiği tarifle karşılaştırın.
  7. Bir zamanlayıcı gibi ekstra bir koşul ekleyerek zorluğu artırın.
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.