Meja

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

Tipe data tabel dapat menyimpan banyak nilai dari jenis apa pun yang bukan , termasuk bilangan , angka , string , fungsi , dan tabel lainnya.Membangun tabel dengan kurungan bergelombang ( {} ):


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

Anda dapat menggunakan tabel sebagai array atau kamus.배열 menggunakan daftar angka yang diurutkan sebagai indeks, tetapi kamus dapat memiliki angka, string, dan objek sebagai indeks.

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

Matriks

Sebuah array adalah daftar nilai yang diurutkan.배열 adalah berguna untuk menyimpan koleksi data, seperti kumpulan pemain dengan izin khusus.

Buat array

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


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

Baca dari array

Untuk membaca dari array, tambahkan pasangan kurung kotak setelah referensinya dan spesifikasikan nomor indeks elemen di dalamnya ( [pos] ):


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

Untuk mendefinisikan atau menulis ulang nilai array di indeks, nyatakan nomor indeks dalam tanda kurung persegi ( [index] ) diikuti dengan = dan nilai:


local testArray = {"A string", 3.14159, true}
testArray[2] = 12345
testArray[4] = "New string"
print(testArray[2]) --12345
print(testArray[4]) -- New string

Berulang atas array

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


local testArray = {"A string", 3.14159, true, "New string"}
-- Lingkaran menggunakan iterasi umum
for index, value in testArray do
print(index, value)
end
-- Berulang 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 Luau's table.insert() .
  • Tambahkan item baru ke array menggunakan syntax array[#array+1].

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

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


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

Hapus item

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


local testArray = {"First item", "Next item", "Last item"}
table.remove(testArray, 2)
print(testArray[1]) -- Item pertama
print(testArray[2]) -- Last item

Kamus

Kamus adalah ekstensi dari array. Kamus menyimpan serangkaian pasangan kunci-nilai, di mana kunci bisa menjadi angka, string, atau objek apa pun.

Buat kamus

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


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

Kunci untuk kamus bisa menjadi angka, string, dan objek.Sebagai contoh, kunci juga bisa menjadi Instance.Untuk menggunakan objek sebagai kunci, nyatakan kunci dalam kurung kotak ( [key] ):


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

Baca dari kamus

Untuk membaca dari kamus, tambahkan pasangan kurung setelah referensinya dan spesifikasikan nama kunci.Referensikan langsung kunci string menggunakan ( ["key"] ) atau ( .key ), atau sebagai gantinya gunakan nilai variabel ( [key] ).


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

Untuk mendefinisikan atau menulis ulang nilai kunci kamus baru atau 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 ada
testDictionary["fruitName"] = "Cherry"
testDictionary.sour = false
-- Sisipkan pasangan kunci-nilai baru
testDictionary.fruitCount = 10
print(testDictionary.fruitName) -- Ceri
print(testDictionary.sour) -- salah
print(testDictionary.fruitCount) -- 10

Berulang atas kamus

Untuk mengulangi atas 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 kunci menjadi 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 itu.Sebagai gantinya, variabel menjadi referensi atau pointer ke tabel asli.Referensi ke tabel mencerminkan setiap perubahan pada tabel asli:


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

Tabel klon

Klon dangkal

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


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

Klon mendalam

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


-- Fungsi yang digunakan untuk kloning mendalam tabel
local function deepClone(original)
-- Definisikan tabel baru untuk salinan
local clone = table.clone(original)
-- Putar melalui tabel asli untuk memeriksa nilai tabel
-- Jika tabel ditemukan sebagai nilai, klon mendalam 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 mendalam
return clone
end

Dengan fungsi di tempat, Anda dapat membuat salinan mendalam sebagai berikut:


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

Membekukan tabel

Membekukan tabel membuatnya menjadi hanya baca, yang berguna untuk membuat nilai konstan yang tidak ingin Anda ubah.Membeku permanen; tidak ada metode "pencairan" atau "pencairan" yang permanen.Untuk memeriksa apakah meja dibekukan, gunakan table.isfrozen() .

Membeku dangkal

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


local target = {
key = "value",
engine = "Roblox",
playerID = 505306092
}
table.freeze(target)
target.playerID = 1 --> attempt to modify a readonly table

Membeku mendalam

Untuk membekukan tabel yang lebih kompleks dengan tabel terkait di dalamnya, gunakan fungsi recursif yang mirip dengan berikut:


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

Dengan fungsi di tempat, Anda dapat membekukan mendalam meja sebagai berikut:


local target = {
key = "value",
playerInfo = {
playerID = 505306092,
playerName = "PlayerName"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
deepFreeze(target)
target.playerInfo.playerID = 1 --> attempt to modify a readonly table