Menu
Coddy logo textTech

pairs() vs. ipairs()

Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 3 / 54.

Hem pairs() hem de ipairs() fonksiyonlarını öğrendiğinize göre, her birini ne zaman kullanacağınızı anlamak önemlidir. Seçim tamamen tablonuzun yapısına ve neyi başarmaya çalıştığınıza bağlıdır.

1'den başlayan ardışık tam sayı anahtarlarına sahip liste tarzı bir tablonuz olduğunda ipairs() kullanın. Öğeleri sırayla işler ve ilk nil değerinde durur; bu da onu sıralamanın önemli olduğu diziler için mükemmel kılar.

Tablonuzda dize anahtarları, karışık anahtar türleri olduğunda veya boşluklara bakılmaksızın tüm girişlere erişmeniz gerektiğinde pairs() kullanın. Tablodaki her anahtar-değer çifti üzerinde belirli bir sıra olmaksızın yinelenir.

Şu karma tabloyu inceleyin:

local gameData = {
    "Level 1",
    "Level 2", 
    "Level 3",
    currentLevel = 2,
    playerName = "Hero"
}

Eğer ipairs() kullanırsanız, sadece üç seviye dizgisini görürsünüz. Eğer pairs() kullanırsanız, dizgi anahtarları dahil olmak üzere beş girdinin tümünü görürsünüz.

challenge icon

Görev

Kolay

Bir data tablosu alan ve sıralı tam sayı anahtarlı öğelerin sayısını döndüren bir countSequentialItems fonksiyonu yazın.

Tablonun sıralı kısmında (indeks 1'den başlayarak ilk nil değerine kadar) kaç öğe bulunduğunu saymak için ipairs() kullanın. Bu, karma tablolarla çalışırken ipairs() ve pairs() arasındaki farkı anlamanıza yardımcı olacaktır.

Parametreler:

  • data (table): Hem sıralı tam sayı anahtarlarını hem de dize anahtarlarını içeren karma bir tablo

Döndürdüğü Değer: Sıralı öğelerin sayısı (number)

Kopya kağıdı

1'den başlayan ardışık tam sayı anahtarlarına sahip liste stili tablolar için ipairs() kullanın. Öğeleri sırayla işler ve ilk nil değerinde durur:

for i, value in ipairs(myList) do
    -- yalnızca ardışık öğeleri işler
end

Dize anahtarlı tablolar, karışık anahtar türleri veya boşluklara bakılmaksızın tüm girişlere erişmeniz gerektiğinde pairs() kullanın. Belirli bir sıra olmaksızın her anahtar-değer çifti üzerinde yinelenir:

for key, value in pairs(myTable) do
    -- tüm anahtar-değer çiftlerini işler
end

Karışık bir tablo örneği:

local gameData = {
    "Level 1",
    "Level 2", 
    "Level 3",
    currentLevel = 2,
    playerName = "Hero"
}

-- ipairs() yalnızca şunları görür: "Level 1", "Level 2", "Level 3"
-- pairs() beş girişin tümünü görür

Kendin dene

function countSequentialItems(data)
    -- Kodunuzu 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