SharedTable

Artık kullanılmayanları göster

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

Koşullar arasında paylaşılabilen bir tablo gibi veri yapısını temsil eder. Genel veri depolama için çeşitli türlerde kullanılabilir, ancak Parallelu Luau , bir Actor instansının altındaki çeşitli Class.Actor instansları arasında durum paylaşılabilir.

Scriptler arasındaki paylaşılan tabloları iletiş kurmak için birkaç idiomatik yöntem vardır. Bir yöntem, ortak bir tabloyu SharedTable ile kaydetip almaktır. Kayıt, herhangi bir mesaj

Bir Luau tablosu gibi, bir SharedTable nesnemi bir dizi anahtar değeri çifti saklar. Bir Luau tablosunda, sadece seçili türlerin nesneleri SharedTable'da saklanabilir, Roblox motorunda bulduğunuz diğer sınırlarla aynıdır.

Anahtarlar ya bir yoluz (1) bir yoluz ya da (2) 2 32'den daha az bir olmayan sayısal bir sayı olmalıdır. Diğer türdeki anahtarlar desteklenmiyor.

Değerler aşağıdaki türlerden birini içermelidir:Boolean, Sayı, Vektor, Strung, SharedTable veya seri olarak kullanılabilir bir veri yaz. SharedTable ile bir değeri başka bir SharedTable ile kullanılabilirliğini izin veren yetenek, üst üste kullanıl

SharedTable nesneler farklı ve ayrı nesnelerdir SharedTable nesneler asla eşit olmayı karşılaştırmaz, hatta eşit içerikleri olsun bile.

Bir Luau tablosu gibi, bir SharedTable nesnesi dondurulabilir ve bu durumda okunur. Bir dondurulmuş SharedTable nesnesini modifi etmeye çalışm

Kod Örnekleri

Element Access

local st = SharedTable.new()
st[1] = "a"
st["x"] = true
st.y = 5
assert(st[1] == "a")
assert(st["x"] == true)
assert(st.x == true)
assert(st["y"] == 5)
assert(st.y == 5)
-- true is not a valid SharedTable key, so attempting to set that key
-- fails:
assert(not pcall(function() st[true] = 100 end))
-- A function is not a valid SharedTable value, so attempting to set a
-- value to a function fails:
assert(not pcall(function() st["f"] = function() end end))
Element Iteration

local st = SharedTable.new({"a", "b", "c"})
for k, v in SharedTable.clone(st, false) do
print(k, ": ", v)
end
for k, v in st do
print(k, ": ", v)
end

Özet

Yapılandırıcılar

Yapılandırıcılar

new

new

Parametreler

İşlevler

clear

void

Parametreler

Dönüşler

void

Parametreler

deep: bool
Varsayılan değer: false

Dönüşler

Kod Örnekleri

Shallow Clone

local original = SharedTable.new()
original["a"] = "original a"
original["b"] = "original b"
original["c"] = SharedTable.new()
original["c"]["d"] = "original d"
local clone = SharedTable.clone(original, false)
clone["a"] = "new a"
clone["b"] = "new b"
clone["c"]["d"] = "new d"
assert(original["a"] == "original a")
assert(original["b"] == "original b")
-- Because this was a shallow clone, original["c"] and clone["c"] are
-- the same SharedTable object.
assert(original["c"] == clone["c"])
assert(original["c"]["d"] == "new d")
Deep Clone

local original = SharedTable.new()
original["a"] = "original a"
original["b"] = "original b"
original["c"] = SharedTable.new()
original["c"]["d"] = "original d"
local clone = SharedTable.clone(original, true)
clone["a"] = "new a"
clone["b"] = "new b"
clone["c"]["d"] = "new d"
assert(original["a"] == "original a")
assert(original["b"] == "original b")
-- Because this was a deep clone, clone["c"] is a clone of original["c"];
-- they are distinct SharedTable objects.
assert(original["c"] ~= clone["c"])
assert(original["c"]["d"] == "original d")

cloneAndFreeze

Parametreler

deep: bool
Varsayılan değer: false

Dönüşler

increment

Parametreler

Dönüşler

Kod Örnekleri

Increment

local st = SharedTable.new()
st["x"] = 1
local oldValue = SharedTable.increment(st, "x", 1)
assert(oldValue == 1)
assert(st["x"] == 2)
-- The value of the specified key must be a number. If it is not a
-- number, the call will fail:
st["y"] = "test"
assert(not pcall(function() SharedTable.increment(st, "y", 1) end))

isFrozen

Parametreler

Dönüşler

size

Parametreler

Dönüşler

update

void

Parametreler

Dönüşler

void

Kod Örnekleri

Update

local st = SharedTable.new()
st["x"] = "abcd"
SharedTable.update(st, "x", function(v)
assert(v == "abcd")
return v .. "e"
end)
assert(st["x"] == "abcde")