Sözlükler, isimleri veya "tuşları" bir sıralama yerine bir değere bağlayan tablardır.
Örnek:
Lua dictionary kısmı
local pet = {Name = "Bobbie",Type = "Dog",}
Değerleri etiketlemek zorunda olduğunuzda sözlükleri kullanın, sadece bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak bir matematiksel olarak
Sözlük Kısmı
Dizionerler matematiksel olarak düzenlenmiş kısa kılıçlarla bir değişkene atanır {} . Anahtar değer çiftleri koma ile ayrı satırlarda saklanır. Anahtarlar ve değerler herhangi bir tipteki veri yaziçerir, yani sıklıkla stringler, sayılar ve değişken isimleri.
local playerNames = {player1 = "Zap",player2 = "Kel",}print(playerNames["player1"])
Parçalara veya diğer yerleşik nesnelerin anahtar olarak referanslanması için kılıçları kullanın.
local greenPart = workspace.GreenPartlocal redPart = workspace.RedPartlocal partList = {[greenPart] = true,[redPart] = false,}print(partList[redPart])
Bir Sözlük Oluşturulması
Bir dizin kullanımı, oyuncu veya karakter bilgilerini organize etmektir. Bu adımlar, teorik bir düşman karakterinin bilgilerinin nasıl depolanıp erişileceğini araştırır.
Yeni bir senaryoda, enemy adında bir sözlük oluşturun.
local enemy = {}Sözlükteki ilk anahtar, düşmanın ismini Name ile takip edecektir.
local enemy = {Name}Bir koma ile bir düşman ismi anahtarına atıfta bulunur.
local enemy = {Name = "Spike",}Düşmanın kaç sağlığı olması gerektiği için ikinci bir anahtar değeri çifti ekleyin. Hatırlayın, anahtarlar daima aynı veri yazkullanmalıdır, ancak değerler kullanılabilir.
local enemy = {Name = "Spike",Health = 1000,}
Sözlük Değerlerini Kullanma
Sözlük değerlerine erişim iki yöldür: tableName["keyName"] -- Notları tableName.keyName
local enemy = {Name = "Spike",Health = 1000,}print("The villain " .. enemy["Name"] .. " approaches!")print("The villain " .. enemy.Name .. " approaches!")
Genellikle kullanılacak stil, kullanıcının bir sunucudaki bir oyuncu listesi gibi bir koleksiyonu içeren tablo için amaçlandığına bağlıdır. Ayrıca bir dizin kullanıcının bir dizi içeren bir dizi kullanıcıyı içeren bir dizi kullanıcıyı içeren bir dizi kullanıcıyı içeren bir dizi kullanıcıyı içeren bir dizi kullanıcıyı i
Bir Sözcüğü Değerini Değiştirme
Bir anahtarın değerini değiştirmek herhangi bir diğer değişkenle aynıdır; eşdeğer = operatörünü kullanın.
En altında enemy masasının altında, düşmanın ismini başka bir şeye ayarlayın.
local enemy = {Name = "Spike",Health = 1000,}enemy.Name = "Rana"print("The enemy's name is " .. enemy.Name)Çıkış penceresini oynat ve kontrol et.
Önceki Değişkenlerin Anahtarları
Sözlükler, kodlanmış bir başka bölümde açıklanan ön varsayılan değişkenlerle etkileşime geçebilir. Aşağıdaki kod örneği, bir oyuncunun ismini anahtar olarak eklemek için bir değişkeni kullanır ve ardından nokta değerini 0 olarak ayarlar.
In ServerScriptService , PlayerPoints adında yeni bir script oluşturun. Skriptte, Oyuncu Hizmeti'ni alın ve boş bir sözlük oluşturun adını playerPoints .
local Players = game:GetService("Players")local playerPoints = {}Yeni bir oyuncu değişkeni için oyuncu puanlarını ayarlamak için yerel bir işlev kodu yazın. Fonksiyonu Players.PlayerAdded etkinliğine bağlayın.
local playerPoints = {}local function setPoints(newPlayer)endPlayers.PlayerAdded:Connect(setPoints)İşlevde, oyuncunun Name 'ini elde etmek için bir değişken ekleyin, her Oyuncu nesnesinin bir özelliği ve test için bir print ifadesi.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)endİsmi playerPoints dizinine bir anahtar olarak girin ve değer, oyuncunun puanlarını, 0 olarak ayarlayın.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)playerPoints[name] = 0endOyuncunun ve oyunPuanının ismini yazdırmak için name kullanarak oyuncunun ve oyunPuanının ismini yazdırın.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)playerPoints[name] = 0print(name .. " has " .. playerPoints[name] .. " points.")endProjeyi çalıştır ve çıktı editörüne bak.
Bitirilmiş kript
local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("hello " .. name)
playerPoints[name] = 0
print(name .. " has " .. playerPoints[name] .. " points.")
end
Players.PlayerAdded:Connect(setPoints)
Opcional Görevler
Aşağıda, farklı yöntemlerle sözlükleri kullanma konusunda uygulanan bazı zorluklar var. Bu konular için kodu oluşturabilir misiniz?
- Bir oyuncuya zamanla hasar veren bir tuzak parçası oluşturun. Bir oyuncu tuzaka dokununca, hasar verin, bekleyin ve tuzak tekrar hasar görecek şekilde izin verin.
- İki oyuncunun hangisinin dictionaire'ye erişerek en çok puanı olduğunu kontrol eden bir işlev oluşturun.
- Gizli bir kod oluşturmak için bir kifre oluşturun, bir kelimeyi başka bir kelime ile değiştirmenin bir yolunu oluşturmak için, örneğin, harf "A"nın "G" ile değiştirileceğini veya kelime "elma"nın kelime "orange" ile değiştirileceğini.
Sözlükler ve çiftler()
pairs() bir dictionary'i iterecek bir işlevdir. Bir örnek aşağıda görülür.
local myDictionary = {["Blue Player"] = "Ana",["Gold Player"] = "Binh",["Red Player"] = "Cate",}for key, value in pairs(myDictionary) doprint(key .. " is " .. value)end
pairs() ile bir sözlük öğesiünün anahtarı, değeri veya her ikisiyle çalışabilir. Aşağıdaki for döngüsünde, ilk değişken anahtardır. İkinci değişken değeridir. İşlemek istediğiniz sözlük pairs() ile verilir.
local inventory = {["Gold Bricks"] = 43,Carrots = 3,Torches = 2,}print("You have:")for itemName, itemValue in pairs(inventory) doprint(itemValue, itemName)end
Çalıştırıldığında kod takip edilenyazacaktır:
You have:43 Gold Bricks3 Carrots2 Torches
Özet
Sözlükler, indeksli değerler yerine anahtar değer çiftlerini kullanan masalardır. Sözlükler ve matrisler aynı şekilde başlar, bir değere curly brackets atar. Girişleri komutlarla ayrı tutun.
Bir sözlük içindeki tüm anahtarlar aynı veri yazkullanmalıdır, ancak değerler, sorun olmadan veri türlerini karıştırabilir.
Bir sözlüğün nasıl erişileceğinin stilini, bir sözlüğün amaçlarını ifade edebilir. Bir düşman özelliğinin dictionary ile ilgili olarak erişileceği muhtemelen dot operatörü ile ifade edilecektir, bir isim listesi ise tableName[keyName] kullanacaktır.
Kılıçları kullanırken dikkatli olun; masanın içinde oluşturulan anahtar isimleri uzun sıralar olarak ele alınmalıdır: tableName["keyName"] . Ancak, parçalar gibi nesneleri referans ettiğinde kılıçlar gerekli değildir: tableName[keyName] .
Birçok kodun dizionary veya matrislerden geçmesi gerekir, ancak bu veri yapılarının başlangıcı ve sonu hakkında her zaman bilgi sahibi olmayabilirsiniz. Örneğin, bir oyuncunun dizininde değişiklik olabilir veya oyuncuların çeşitli boyutlardaki bir matris envanteri olabilir.
Bu durumlarda, şu anda bilinmeyen başlangıç ve bitiş noktaları olmadan her bir öğeyi geçmek için pairs() ve ipairs() ile bir for döngüsünde kullanabilirsiniz. Ayrıca, genel itmeyi 1>in1>