Tablo

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

Tablo veri tipi, nil olmayan herhangi bir türde birden fazla değeri depolayabilir. Bu, boole ifadelerini, sayılara, metinlere, fonksiyonlara ve diğer tablolara dahildir. Tabloları süslü parantezlerle ({}) oluşturun:


-- "t" değişkenine atanmış boş bir tablo oluşturun
local t = {}
print(t) -- {}

Bir tabloyu bir dizi veya sözlük olarak kullanabilirsiniz. Diziler, indeks olarak sıralı bir sayı listesi kullanırken, sözlükler, indeks olarak sayılar, metinler ve nesneler içerebilir.

Tablolar üzerinde çalışmak için yerleşik fonksiyonlar hakkında daha fazla bilgi için table kütüphanesine bakın.

Diziler

Bir dizi, değerler için sıralı bir listedir. Diziler, özel izinlere sahip oyuncular grubu gibi veri koleksiyonlarını saklamak için kullanışlıdır.

Diziler oluşturma

Bir Luau tablosu kullanarak bir dizi oluşturmak için, değerleri sırayla, virgüllerle ayırarak tanımlayın.


-- Üç öğeden oluşan bir dizi oluşturun
local testArray = {"Bir metin", 3.14159, true}
print(testArray)

Dizilerden okuma

Bir diziden okumak için, referansın ardından bir çift köşeli parantez ekleyin ve içerisindeki elementin indeks numarasını belirtin ([pos]):


-- Üç öğeden oluşan bir dizi oluşturun
local testArray = {"Bir metin", 3.14159, true}
print(testArray[1]) -- Bir metin
print(testArray[2]) -- 3.14159
print(testArray[3]) -- true

Dizilere yazma

Bir dizinin bir indeksindeki değeri tanımlamak veya yeniden yazmak için, köşeli parantezlerde ([index]) indeks numarasını belirtin, ardından = ve değeri ekleyin:


local testArray = {"Bir metin", 3.14159, true}
testArray[2] = 12345
testArray[4] = "Yeni metin"
print(testArray[2]) -- 12345
print(testArray[4]) -- Yeni metin

Dizileri döngüye alma

Bir diziyi döngüye almak için, bir for döngüsü kullanabilirsiniz. Dizilerin sayısal indeksleri olduğu için, dizinin uzunluğu üzerinden (#array) sayısal bir for döngüsü de kullanabilirsiniz.


local testArray = {"Bir metin", 3.14159, true, "Yeni metin"}
-- Genel döngü kullanma
for index, value in testArray do
print(index, value)
end
-- Dizi uzunluk operatörü ile döngü
for index = 1, #testArray do
print(index, testArray[index])
end

Öğeleri ekleme

Bir diziye sonuna bir öğe eklemek için iki yerleşik yol vardır:

  • Diziye bir referans ve öğe değerini Luau'nun table.insert() fonksiyonuna geçirin.
  • array[#array + 1] sözdizimini kullanarak yeni öğeyi diziye ekleyin.

local testArray = {"Bir metin", 3.14159}
table.insert(testArray, "Yeni metin")
testArray[#testArray + 1] = "Başka bir yeni metin"
print(testArray[3]) -- Yeni metin
print(testArray[4]) -- Başka bir yeni metin

Bir öğeyi dizinin başlangıcı ve sonu arasına eklemek için, ikinci argüman olarak table.insert() fonksiyonuna bir konum değeri ekleyin. Bu, yeni öğeyi ekler ve aşağıdaki öğeleri bir indeks konumunu yukarı iter.


local testArray = {"İlk öğe", "Sonraki öğe"}
table.insert(testArray, 2, "YENİ ÖĞE #2")
print(testArray[1]) -- İlk öğe
print(testArray[2]) -- YENİ ÖĞE #2
print(testArray[3]) -- Sonraki öğe

Öğeleri kaldırma

Bir diziden bir öğeyi kaldırmak için, table.remove() kullanın. Bu, belirtilen konumdaki öğeyi kaldırır ve sonraki öğeleri bir indeks konumunu geriye iter.


local testArray = {"İlk öğe", "Sonraki öğe", "Son öğe"}
table.remove(testArray, 2)
print(testArray[1]) -- İlk öğe
print(testArray[2]) -- Son öğe

Sözlükler

Sözlükler dizilerin bir uzantısıdır. Sözlükler, anahtar-değer çiftlerini saklar; burada anahtarlar herhangi bir sayı, metin veya nesne olabilir.

Sözlükler oluşturma

Bir sözlük tablosu oluşturmak için, her anahtarı = ve değer ile takip edin. Her anahtar-değer çiftini virgülle ayırın:


local testDictionary = {
fruitName = "Limon",
fruitColor = "Sarı",
sour = true
}

Sözlükler için anahtarlar sayılar, metinler ve nesneler olabilir. Örneğin, bir anahtar ayrıca bir Instance olabilir. Nesneleri anahtar olarak kullanmak için, anahtarı köşeli parantezlerde ([key]) tanımlayın:


local part = Instance.new("Part")
local testDictionary = {
partType = "Blok",
[part] = true
}

Sözlüklerden okuma

Bir sözlükten okumak için, referansın ardından bir çift parantez ekleyin ve anahtar adını belirtin. Bir metin anahtarını doğrudan herhangi biriyle referanslayın (["key"]) ya da (.key), veya bir değişken değeri kullanın ([key]).


local part = Instance.new("Part")
local testDictionary = {
partType = "Blok",
[part] = true
}
-- Metin anahtarları için alıntı ekleyin
print(testDictionary["partType"]) -- Blok
-- Alternatif olarak, boşluk olmayan metin anahtarlarını indekslemek için . kullanın
print(testDictionary.partType) -- Blok
-- Metin olmayan anahtarlar için alıntıları atlayın
print(testDictionary[part]) -- true

Sözlüklerde yazma

Yeni veya mevcut bir sözlük anahtarının değerini tanımlamak veya yeniden yazmak için, anahtar adını köşeli parantezlerde ([key]) veya anahtar bir metinse (.key) kullanarak ardından = ve değeri belirtin:


local testDictionary = {
fruitName = "Limon",
sour = true
}
-- Mevcut anahtarların değerlerini değiştirme
testDictionary["fruitName"] = "Kiraz"
testDictionary.sour = false
-- Yeni anahtar-değer çifti ekleme
testDictionary.fruitCount = 10
print(testDictionary.fruitName) -- Kiraz
print(testDictionary.sour) -- false
print(testDictionary.fruitCount) -- 10

Sözlükleri döngüye alma

Bir sözlüğü döngüye almak için, bir for döngüsü kullanın:


local testDictionary = {
fruitName = "Limon",
fruitColor = "Sarı",
sour = true
}
for key, value in testDictionary do
print(key, value)
end
--[[ Sonuç çıktısı:
fruitName Limon
sour true
fruitColor Sarı
]]

Anahtar-değer çiftlerini kaldırma

Bir sözlükten bir anahtar-değer çiftini kaldırmak veya silmek için, anahtar için değerini nil olarak ayarlayın.


local testDictionary = {
fruitName = "Limon",
fruitColor = "Sarı",
sour = true
}
testDictionary.sour = nil
for key, value in testDictionary do
print(key, value)
end
--[[ Sonuç çıktısı:
fruitName Limon
fruitColor Sarı
]]

Tablo referansları

Eğer bir tabloyu yeni bir değişkende saklarsanız, Luau bu tablonun bir kopyasını oluşturmaz. Bunun yerine, değişken, orijinal tablonun bir referansı veya işaretçisi haline gelir. Bir tabloya yapılan her referans, orijinal tablodaki değişiklikleri yansıtır:


local originalArray = {10, 20}
local arrayReference = originalArray
print("Orijinal:", originalArray[1], originalArray[2])
print("Referans:", arrayReference[1], arrayReference[2])
-- Orijinal dizideki değerleri değiştirin
originalArray[1] = 1000
originalArray[2] = 2000
print("Referans:", arrayReference[1], arrayReference[2])
--[[ Sonuç çıktısı:
Orijinal: 10 20
Referans: 10 20
Referans: 1000 2000
]]

Tabloları klonlama

Yüzeysel klonlar

Bir tabloyu iç içe tablolar olmadan kopyalamak için, Luau table.clone() yöntemini sunar.


local original = {
key = "değer",
engine = "Roblox",
playerID = 505306092
}
local clone = table.clone(original)

Derin klonlar

İç içe tablolar içeren daha karmaşık bir tabloyu kopyalamak için, aşağıda benzer bir özyinelemeli işlev kullanmanız gerekir:


-- Bir tablonun derin klonlaması için kullanılan işlev
local function deepClone(original)
-- Kopya için yeni tabloyu tanımlayın
local clone = table.clone(original)
-- Orijinal tabloyu kontrol etmek için döngü
-- Değer olarak bir tablo bulunduğunda, bunu anahtara (indeks) derin klonlayın
for key, value in original do
if type(value) == "table" then
clone[key] = deepClone(value)
end
end
-- Derin klonlama sonucunda tamamlanmış kopyayı döndür
return clone
end

İşlev ayarlandığında, aşağıdaki gibi bir derin kopya oluşturabilirsiniz:


local original = {
key = "değer",
playerInfo = {
playerID = 505306092,
playerName = "OyuncuAdı"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
local clone = deepClone(original)

Tabloları dondurma

Bir tabloyu dondurmak, onu salt okunur hale getirir; bu, değiştirmek istemediğiniz sabit değerler oluşturmak için yararlıdır. Dondurma kalıcıdır; "dondurmayı çözme" veya "çözme" yöntemi yoktur. Bir tablonun donmuş olup olmadığını kontrol etmek için table.isfrozen() kullanın.

Yüzeysel dondurmalar

İç içe tablolar olmadan bir tabloyu dondurmak için Luau table.freeze() yöntemini sunar.


local target = {
key = "değer",
engine = "Roblox",
playerID = 505306092
}
table.freeze(target)
target.playerID = 1 --> salt okunur tabloyu değiştirme girişimi

Derin dondurmalar

İç içe tablolar içeren daha karmaşık bir tabloyu dondurmak için, aşağıda benzer bir özyinelemeli işlev kullanın:


local function deepFreeze(target)
-- Tabloyu yüzeysel dondurun
table.freeze(target)
-- Tablonun her anahtarını kontrol edin ve bir tabloysa dondurun
for _, value in target do
-- Değerin dondurulmadığından emin olun; eğer zaten dondurulmuşsa, bir hata oluşur
if type(value) == "table" and table.isfrozen(value) == false then
deepFreeze(value)
end
end
end

İşlev ayarlandığında, bir tabloyu aşağıdaki gibi derin dondurabilirsiniz:


local target = {
key = "değer",
playerInfo = {
playerID = 505306092,
playerName = "OyuncuAdı"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
deepFreeze(target)
target.playerInfo.playerID = 1 --> salt okunur tabloyu değiştirme girişimi
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.