Sözlükler ile Tanışma

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

Sözlükler, adları veya anahtarları bir indeks yerine bir değer ile ilişkilendiren tablolardır.

Örnek:

Luau sözlük sözdizimi

local pet = {
Name = "Bobbie",
Type = "Dog",
}

Sadece bir dizi gibi sıralamak yerine değerleri etiketlemeniz gerektiğinde sözlükleri kullanın. Bu öğreticide, bir oyuncuyla ilişkili değerleri manipüle ederek sözlükleri kullanmayı pratik edin.

Sözlük sözdizimi

Diziler gibi, sözlükler de süslü parantez {} ile bir değişkene atanır. Anahtar-değer çiftleri ayrı satırlarda ve bir virgülle takip edilerek saklanır. Anahtarlar ve değerler, string, sayı ve değişken adları dahil her veri türü olabilir.


local playerNames = {
player1 = "Zap",
player2 = "Kel",
}
print(playerNames["player1"])

Anahtar olarak parçaları veya diğer örnek nesneleri referans almak için köşeli parantezler kullanın.


local greenPart = workspace.GreenPart
local redPart = workspace.RedPart
local partList = {
[greenPart] = true,
[redPart] = false,
}
print(partList[redPart])

Bir sözlük oluşturun

Sözlüklerin günlük bir kullanımı, oyuncu veya karakter bilgilerini düzenlemektir. Bu adımlar, teorik bir düşman karakterinin bilgilerini nasıl saklayabileceğinizi ve erişebileceğinizi keşfeder.

  1. Yeni bir betikte enemy adında bir sözlük oluşturun.


    local enemy = {
    }
  2. Sözlükteki ilk anahtar, düşmanın adını takip etmek için Name adında bir değişken olacak.


    local enemy = {
    Name
    }
  3. Anahtarın yanına bir virgül koyarak bir düşman adı atayın.


    local enemy = {
    Name = "Spike",
    }
  4. Düşmanın sahip olması gereken sağlık miktarı için ikinci bir anahtar-değer çifti ekleyin. Anahtarların her zaman aynı veri türünü kullanması gerektiğini unutmayın, ancak değerler bunu yapmayabilir.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }

Sözlük değerlerini kullanın

Sözlük değerlerine erişmenin iki yolu vardır:

  • tableName["keyName"] (önemle, tırnakları unutmayın)
  • tableName.keyName

local enemy = {
Name = "Spike",
Health = 1000,
}
print("Kötü adam " .. enemy["Name"] .. " yaklaşıyor!")
print("Kötü adam " .. enemy.Name .. " yaklaşıyor!")

Hangi stilin kullanılacağı genellikle tablonun amacına bağlıdır. Bir sunucudaki oyuncu listesini tutan tablolar için kodlayıcılar genellikle tableName["keyName"] kullanır. Bir nesneyi tanımlamak için kullanılan bir sözlükte, kodlayıcılar daha çok tableName.keyName kullanma eğilimindedir.

Bir sözlük değerini değiştirin

Bir anahtarın değerini değiştirmek, diğer değişkenler gibi = operatörünü kullanmakla aynı şeydir.

  1. enemy tablosunun altında düşmanın adını başka bir şeyle ayarlayın.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("Düşmanın adı " .. enemy.Name)
  2. Oyun testini yapın ve Çıktı penceresini kontrol edin.

Önceden mevcut değişkenler anahtar olarak

Sözlükler, bir betiğin diğer kısımlarında tanımlanan önceden mevcut değişkenlerle etkileşim kurabilir. Aşağıdaki kod örneği, bir oyuncunun adını deneyime katıldığında anahtar olarak eklemek için bir değişken kullanan bir fonksiyonu gösterir ve ardından puan değerini 0 olarak ayarlar.

  1. ServerScriptService'de, PlayerPoints adında yeni bir betik oluşturun. Betikte, Players Servisini alın ve boş bir sözlük olan playerPoints oluşturun.


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. Yeni bir oyuncu değişkeni için parametre ile oyuncu puanlarını ayarlamak için bir yerel fonksiyon yazın. Fonksiyonu Players.PlayerAdded olayına bağlayın.


    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. Fonksiyonda, her Player nesnesinde bulunan bir özellik olan oyuncunun Name'ini almak için bir değişken ekleyin ve test için bir yazdırma ifadesi ekleyin.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("merhaba " .. name)
    end
  4. name değişkenini playerPoints sözlüğüne bir anahtar olarak ekleyin ve değerini, oyuncunun puanlarını 0 olarak ayarlayın.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("merhaba " .. name)
    playerPoints[name] = 0
    end
  5. name kullanarak oyuncunun adını ve playerPoints[name] kullanarak değişkenle eşleşen anahtarın değerini yazdırın.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("merhaba " .. name)
    playerPoints[name] = 0
    print(name .. " in " .. playerPoints[name] .. " puanı var.")
    end
  6. Projeyi çalıştırın ve çıktıyı gözlemleyin.

Tamamlanmış betik

local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("merhaba " .. name)
playerPoints[name] = 0
print(name .. " in " .. playerPoints[name] .. " puanı var.")
end
Players.PlayerAdded:Connect(setPoints)

Opsiyonel zorluklar

Aşağıda, sözlükleri farklı şekillerde kullanmayı gerektiren bazı zorluklar bulunmaktadır. Bu kodları oluşturup oluşturamayacağınıza bakın.

  • Bir oyuncuya zamanla zarar veren bir tuzak parçası oluşturun. Bir oyuncu tuzağa dokunduğunda, zarar verin, bekleyin ve ardından yeniden zarar vermeye izin verin.
  • Bir sözlüğü kullanarak, iki oyuncudan hangisinin en çok puana sahip olduğunu kontrol eden bir fonksiyon oluşturun.
  • Bir şifre oluşturun, bir dizeyi başka bir dize ile değiştirerek "gizli" bir kod oluşturma sistemi. Örneğin, "A" harfi "G" ile değiştirilebilirken, "elma" kelimesi "portakal" ile değiştirilebilir.

Sözlükler ve pairs()

pairs() fonksiyonu genellikle sözlükler üzerinden geçiş yapmak için 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 anahtardır. İkinci değişken değerdir. Üzerinde çalışmak istediğiniz sözlük pairs() fonksiyonuna geçirilir.


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

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


Sizde var:
43 Altın Tuğlalar
3 Havucular
2 Somunlar

Özet

Sözlükler, anahtar-değer çiftleri kullanan tablolardır, indexed değerler yerine. Sözlükler ve diziler benzer şekilde süslü parantezler ile bir değişkene atanır. Girişleri virgüllerle ayırın.

Bir sözlükteki tüm anahtarlar aynı veri türünü kullanmalıdır, ancak değerler veri türlerini karıştırmadan sorun yaşamadan kullanılabilir.

Bir sözlüğün nasıl erişildiği, amacını iletebilir. Düşman özelliklerinin bir sözlüğü muhtemelen nokta operatörüyle erişilecekken, bir isimler listesi muhtemelen tableName[keyName] kullanılarak erişilecektir.

Köşeli parantezler kullanırken dikkatli olun; tabloda oluşturulan anahtar adları string olarak ele alınmalıdır: tableName["keyName"]. Ancak parçalar gibi nesnelere referans verirken tırnaklar gerekmez: tableName[keyName].

Pek çok betik sözlükler veya diziler üzerinden gitmekte, ancak bu veri yapılarının başlangıç ve bitiş noktalarını her zaman bilemeyebilirsiniz. Örneğin, oyuncuların bir sözlüğü değişiyor olabilir ya da oyuncuların farklı boyutlarda bir dizi envanteri olabilir.

Bu durumlarda, her bir öğeyi bilinen başlangıç ve bitiş noktaları olmadan geçmek için pairs() ve ipairs()'i bir for döngüsünde kullanabilirsiniz. Ayrıca in anahtar kelimesiyle genel yineleme kullanarak pairs() veya ipairs() gereksinimi olmadan öğeler üzerinden döngü oluşturabilirsiniz.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.