Tabel

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tipe data table dapat menyimpan beberapa nilai dari tipe apa pun yang bukan nil, termasuk boolean, angka, string, fungsi, dan tabel lainnya. Buat tabel dengan menggunakan kurung kurawal ({}):


-- Buat tabel kosong yang ditugaskan ke variabel "t"
local t = {}
print(t) -- {}

Anda dapat menggunakan tabel sebagai array atau kamus. Array menggunakan daftar urut angka sebagai indeks, tetapi kamus dapat memiliki angka, string, dan objek sebagai indeks.

Untuk informasi lebih lanjut tentang fungsi bawaan untuk bekerja dengan tabel, lihat pustaka table.

Array

Sebuah array adalah daftar nilai yang terurut. Array berguna untuk menyimpan kumpulan data, seperti sekelompok pemain dengan izin khusus.

Buat array

Untuk membuat array menggunakan tabel Luau, nyatakan nilai-nilai dalam urutan berurutan, dipisahkan dengan koma.


-- Buat array dengan tiga item
local testArray = {"Sebuah string", 3.14159, true}
print(testArray)

Baca dari array

Untuk membaca dari array, tambahkan sepasang kurung siku setelah referensinya dan tentukan nomor indeks elemen di dalamnya ([pos]):


-- Buat array dengan tiga item
local testArray = {"Sebuah string", 3.14159, true}
print(testArray[1]) -- Sebuah string
print(testArray[2]) -- 3.14159
print(testArray[3]) -- true

Tulis ke array

Untuk mendefinisikan atau menulis ulang nilai dari array pada indeks, nyatakan nomor indeks dalam kurung siku ([index]) diikuti dengan = dan nilai:


local testArray = {"Sebuah string", 3.14159, true}
testArray[2] = 12345
testArray[4] = "String baru"
print(testArray[2]) -- 12345
print(testArray[4]) -- String baru

Iterasi pada array

Untuk mengiterasi array, Anda dapat menggunakan loop for. Karena array memiliki indeks numerik, Anda juga dapat menggunakan loop for numerik dari 1 ke panjang array (#array).


local testArray = {"Sebuah string", 3.14159, true, "String baru"}
-- Loop dengan iterasi umum
for index, value in testArray do
print(index, value)
end
-- Iterasi menggunakan operator panjang array (#)
for index = 1, #testArray do
print(index, testArray[index])
end

Sisipkan item

Ada dua cara bawaan untuk menyisipkan item ke akhir array:

  • Berikan referensi ke array dan nilai item ke fungsi table.insert() milik Luau.
  • Tambahkan item baru ke array menggunakan sintaks array[#array+1].

local testArray = {"Sebuah string", 3.14159}
table.insert(testArray, "String baru")
testArray[#testArray+1] = "String baru lainnya"
print(testArray[3]) -- String baru
print(testArray[4]) -- String baru lainnya

Untuk menyisipkan item di antara awal dan akhir array, sertakan nilai posisi sebagai argumen kedua dari table.insert(). Ini menyisipkan item baru dan mendorong item berikutnya satu posisi indeks ke atas.


local testArray = {"Item pertama", "Item selanjutnya"}
table.insert(testArray, 2, "ITEM BARU #2")
print(testArray[1]) -- Item pertama
print(testArray[2]) -- ITEM BARU #2
print(testArray[3]) -- Item selanjutnya

Hapus item

Untuk menghapus item dari array, gunakan table.remove(). Ini menghapus item pada posisi yang ditentukan dan menggeser item berikutnya kembali satu posisi indeks.


local testArray = {"Item pertama", "Item selanjutnya", "Item terakhir"}
table.remove(testArray, 2)
print(testArray[1]) -- Item pertama
print(testArray[2]) -- Item terakhir

Kamus

Kamus adalah ekstensi dari array. Kamus menyimpan sekumpulan pasangan kunci-nilai, di mana kunci dapat berupa angka, string, atau objek apa pun.

Buat kamus

Untuk membuat tabel kamus, definisikan setiap kunci diikuti dengan = dan nilai. Pisahkan setiap pasangan kunci-nilai dengan koma:


local testDictionary = {
fruitName = "Lemon",
fruitColor = "Yellow",
sour = true
}

Kunci untuk kamus dapat berupa angka, string, dan objek. Misalnya, sebuah kunci juga dapat berupa Instance. Untuk menggunakan objek sebagai kunci, nyatakan kunci dalam kurung siku ([key]):


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

Baca dari kamus

Untuk membaca dari kamus, tambahkan sepasang kurung setelah referensinya dan tentukan nama kunci. Secara langsung referensikan kunci string menggunakan (["key"]) atau (.key), atau gunakan nilai variabel ([key]).


local part = Instance.new("Part")
local testDictionary = {
partType = "Block",
[part] = true
}
-- Sertakan tanda kutip untuk kunci string
print(testDictionary["partType"]) -- Block
-- Atau gunakan . untuk mengindeks kunci string tanpa spasi
print(testDictionary.partType) -- Block
-- Hilangkan tanda kutip untuk kunci non-string
print(testDictionary[part]) -- true

Tulis ke kamus

Untuk mendefinisikan atau menulis ulang nilai dari kunci kamus baru atau yang sudah ada, nyatakan nama kunci dalam kurung ([key]) atau, jika kunci adalah string, gunakan (.key) diikuti dengan = dan nilai:


local testDictionary = {
fruitName = "Lemon",
sour = true
}
-- Ubah nilai kunci yang sudah ada
testDictionary["fruitName"] = "Cherry"
testDictionary.sour = false
-- Sisipkan pasangan kunci-nilai baru
testDictionary.fruitCount = 10
print(testDictionary.fruitName) -- Cherry
print(testDictionary.sour) -- false
print(testDictionary.fruitCount) -- 10

Iterasi pada kamus

Untuk mengiterasi kamus, gunakan loop for:


local testDictionary = {
fruitName = "Lemon",
fruitColor = "Yellow",
sour = true
}
for key, value in testDictionary do
print(key, value)
end
--[[ Hasil keluaran:
fruitName Lemon
sour true
fruitColor Yellow
]]

Hapus pasangan kunci-nilai

Untuk menghapus atau menghapus pasangan kunci-nilai dari kamus, atur nilainya untuk sebuah kunci ke nil.


local testDictionary = {
fruitName = "Lemon",
fruitColor = "Yellow",
sour = true
}
testDictionary.sour = nil
for key, value in testDictionary do
print(key, value)
end
--[[ Hasil keluaran:
fruitName Lemon
fruitColor Yellow
]]

Tabel sebagai referensi

Jika Anda menyimpan tabel dalam variabel baru, Luau tidak membuat salinan tabel tersebut. Sebaliknya, variabel tersebut menjadi referensi, atau penunjuk, ke tabel asli. Setiap referensi ke tabel mencerminkan setiap perubahan pada tabel asli:


local originalArray = {10, 20}
local arrayReference = originalArray
print("Asli:", originalArray[1], originalArray[2])
print("Referensi:", arrayReference[1], arrayReference[2])
-- Ubah nilai di array asli
originalArray[1] = 1000
originalArray[2] = 2000
print("Referensi:", arrayReference[1], arrayReference[2])
--[[ Hasil keluaran:
Asli: 10 20
Referensi: 10 20
Referensi: 1000 2000
]]

Menyalin tabel

Klon dangkal

Untuk menyalin tabel tanpa tabel bersarang, Luau menawarkan metode table.clone().


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

Klon dalam

Untuk menyalin tabel yang lebih kompleks dengan tabel bersarang di dalamnya, Anda perlu menggunakan fungsi rekursif yang mirip dengan berikut:


-- Fungsi yang digunakan untuk klon dalam sebuah tabel
local function deepClone(original)
-- Definisikan tabel baru untuk salinan
local clone = table.clone(original)
-- Loop melalui tabel asli untuk memeriksa nilai tabel
-- Jika tabel ditemukan sebagai nilai, klon dalam ke kunci (indeks)
for key, value in original do
if type(value) == "table" then
clone[key] = deepClone(value)
end
end
-- Kembalikan salinan akhir dari tabel klon dalam
return clone
end

Dengan fungsi ini di tempatnya, Anda dapat membuat salinan dalam sebagai berikut:


local original = {
key = "value",
playerInfo = {
playerID = 505306092,
playerName = "NamaPemain"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
local clone = deepClone(original)

Bekukan tabel

Membekukan tabel menjadikannya hanya-baca, yang berguna untuk membuat nilai konstan yang tidak ingin Anda ubah. Pembekuan bersifat permanen; tidak ada metode "unfreeze" atau "thaw". Untuk memeriksa apakah tabel dibekukan, gunakan table.isfrozen().

Bekuan dangkal

Untuk membekukan tabel tanpa tabel bersarang, Luau menawarkan metode table.freeze().


local target = {
key = "value",
engine = "Roblox",
playerID = 505306092
}
table.freeze(target)
target.playerID = 1 --> percobaan untuk memodifikasi tabel yang hanya-baca

Bekuan dalam

Untuk membekukan tabel yang lebih kompleks dengan tabel bersarang di dalamnya, gunakan fungsi rekursif yang mirip dengan berikut:


local function deepFreeze(target)
-- Bekukan tabel
table.freeze(target)
-- Periksa setiap kunci tabel dan bekukan jika itu adalah tabel
for _, value in target do
-- Pastikan nilai tidak dibekukan; jika sudah, akan terjadi kesalahan
if type(value) == "table" and table.isfrozen(value) == false then
deepFreeze(value)
end
end
end

Dengan fungsi ini di tempatnya, Anda dapat membekukan tabel dalam sebagai berikut:


local target = {
key = "value",
playerInfo = {
playerID = 505306092,
playerName = "NamaPemain"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
deepFreeze(target)
target.playerInfo.playerID = 1 --> percobaan untuk memodifikasi tabel yang hanya-baca
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.