Sözlükler Giriş

*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, isimleri veya anahtarları bir değerle bir indeks yerine ilişkilendiren tablolardır.

Örnek:

Luau sözlük sözdizimi
local pet = {
Name = "Bobbie",
Type = "Dog",
}

Sözlükleri, değerleri etiketlemeniz gerektiğinde kullanın, sadece bir dizi gibi sıralı olarak listelemek için değil. 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ü parantezler {} ile bir değişkene atanır. Anahtar-değer çiftleri ayrı satırlarda virgül ile takip edilerek saklanır. Anahtarlar ve değerler, dizeler, sayılar ve değişken adları dahil olmak üzere herhangi bir 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 parantezleri 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 bir günlük kullanım alanı, oyuncu veya karakter bilgilerini düzenlemektir. Bu adımlar, teorik bir düşman karakterinin bilgilerini nasıl saklayıp 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ı Name adında bir değişkenle takip edecektir.

    local enemy = {
    Name
    }
  3. Anahtara bir düşman adı atayın, ardından bir virgül koyun.

    local enemy = {
    Name = "Spike",
    }
  4. Düşmanın sahip olması gereken sağlık miktarı için ikinci bir anahtar-değer çifti ekleyin. Unutmayın, anahtarlar her zaman aynı veri türünü kullanmalıdır, ancak değerler zorunlu değildir.

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

Sözlük değerlerini kullanma

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

  • tableName["keyName"] (önemle, tırnak işaretlerine dikkat edin)
  • 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. Sunucudaki oyuncuların 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ştirme

Bir anahtarın değerini değiştirmek, diğer değişkenlerle aynı şekilde yapılır; eşit = operatörünü kullanın.

  1. enemy tablosunun altında, düşmanın adını başka bir şey olarak 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 var olan değişkenler anahtar olarak

Sözlükler, bir betiğin diğer bölümlerinde tanımlanan önceden var olan değişkenlerle etkileşimde bulunabilir. Aşağıdaki kod örneği, bir oyuncunun oyuna katıldığında adını anahtar olarak eklemek için bir değişken kullanır ve ardından puan değerini 0 olarak ayarlar.

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

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

    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. İşlevde, her Player nesnesinde bulunan bir özellik olan oyuncunun Name değerini 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ğeri, oyuncunun puanını 0 olarak ayarlayın.

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

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("merhaba " .. name)
    playerPoints[name] = 0
    print(name .. " " .. playerPoints[name] .. " puana sahip.")
    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 .. " " .. playerPoints[name] .. " puana sahip.")
end
Players.PlayerAdded:Connect(setPoints)

Opsiyonel zorluklar

Aşağıda, sözlükleri farklı şekillerde kullanmaya yönelik bazı zorluklar bulunmaktadır. Bunlar için kodu geliştirebilir misiniz?

  • Bir oyuncuya zamanla zarar veren bir tuzak parçası oluşturun. Bir oyuncu tuzağa dokunduğunda, zarar verin, bekleyin ve ardından tekrar zarar vermelerine izin verin.
  • İki oyuncunun hangi oyuncunun daha fazla puana sahip olduğunu kontrol eden bir işlev oluşturun ve bir sözlüğe erişin.
  • Bir şifreleme sistemi oluşturun; bir dizeyi başka bir dize ile değiştirerek "gizli" bir kod oluşturun. Örneğin, "A" harfi "G" ile veya "elma" kelimesi "portakal" ile değiştirilebilir.

Sözlükler ve pairs()

pairs() genellikle sözlükler üzerinde yineleme yapmak için kullanılan bir işlevdir. 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()'e geçirilir.

local inventory = {
["Altın Tuğlalar"] = 43,
Havuçlar = 3,
Fenerler = 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 Fenerler

Özet

Sözlükler, anahtar-değer çiftleri kullanan tablolardır, indeksli değerler yerine. Sözlükler ve diziler, süslü parantezleri bir değişkene atayarak benzer şekilde başlar. 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üğe erişim şekli, amacını iletebilir. Bir düşman özellikleri sözlüğü muhtemelen nokta operatörü ile erişilecekken, bir isimler listesi muhtemelen tableName[keyName] kullanacaktır.

Köşeli parantezler kullanırken dikkatli olun; tabloda oluşturulan anahtar adları dizeler olarak ele alınmalıdır: tableName["keyName"]. Ancak, parçalar gibi nesneleri referans alırken tırnak işaretlerine gerek yoktur: tableName[keyName].

Birçok betik, sözlükler veya diziler üzerinde geçiş yapması gerekir, ancak bu veri yapıların başlangıç ve bitiş noktalarını her zaman bilemeyebilirsiniz. Örneğin, bir oyuncular sözlüğü değişiyor olabilir veya oyuncuların değişken boyutlarda bir dizi envanteri olabilir.

Bu durumlarda, her bir öğeyi bilinen başlangıç ve bitiş noktaları olmadan geçmek için pairs() ve ipairs() kullanabilir ve for döngüsü ile geçiş yapabilirsiniz. Ayrıca, in anahtar kelimesi ile genel yineleme kullanarak pairs() veya ipairs() gereksinimi olmadan öğeleri döngüleyebilirsiniz.

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