ตาราง

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ประเภทข้อมูล ตาราง สามารถเก็บค่าหลายค่าได้ของประเภทใดก็ได้ที่ไม่ใช่ nil รวมถึง ค่าบูลีน, ตัวเลข, สตริง, ฟังก์ชัน, และตารางอื่นๆ สร้างตารางด้วยวงเล็บปีกกา ({}):


-- สร้างตารางว่างที่กำหนดให้กับตัวแปร "t"
local t = {}
print(t) -- {}

คุณสามารถใช้ตารางเป็น อาเรย์ หรือ พจนานุกรม อาเรย์ใช้รายการที่มีลำดับของตัวเลขเป็นดัชนี แต่พจนานุกรมสามารถมีทั้งตัวเลข สตริง และออบเจ็กต์เป็นดัชนี

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันในตัวสำหรับทำงานกับตาราง ให้ดูที่ไลบรารี table

อาเรย์

อาเรย์ คือรายการที่มีลำดับของค่า อาเรย์มีประโยชน์ในการเก็บคอลเลคชันของข้อมูล เช่น กลุ่มผู้เล่นที่มีสิทธิพิเศษ

สร้างอาเรย์

ในการสร้างอาเรย์โดยใช้ตาราง Luau ให้กำหนดค่าด้วยลำดับที่ตามกัน โดยแยกด้วยเครื่องหมายจุลภาค


-- สร้างอาเรย์ด้วยสามรายการ
local testArray = {"A string", 3.14159, true}
print(testArray)

อ่านจากอาเรย์

ในการอ่านจากอาเรย์ ให้เพิ่มคู่ของวงเล็บสี่เหลี่ยมหลังจากการอ้างอิงและระบุหมายเลขดัชนีขององค์ประกอบภายใน ([pos]):


-- สร้างอาเรย์ด้วยสามรายการ
local testArray = {"A string", 3.14159, true}
print(testArray[1]) -- A string
print(testArray[2]) -- 3.14159
print(testArray[3]) -- true

เขียนลงในอาเรย์

ในการกำหนดหรือเขียนค่าใหม่ของอาเรย์ที่ดัชนี ให้ระบุหมายเลขดัชนีในวงเล็บสี่เหลี่ยม ([index]) ตามด้วย = และค่า:


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

ทำซ้ำในอาเรย์

ในการทำซ้ำในอาเรย์ คุณสามารถใช้วงรอบ for เนื่องจากอาเรย์มีดัชนีเชิงตัวเลข คุณยังสามารถใช้วงรอบ for เชิงตัวเลขจาก 1 ถึงความยาวของอาเรย์ (#array)


local testArray = {"A string", 3.14159, true, "New string"}
-- วนรอบโดยใช้การทำซ้ำทั่วไป
for index, value in testArray do
print(index, value)
end
-- ทำซ้ำโดยใช้ตัวดำเนินการความยาวอาเรย์ (#)
for index = 1, #testArray do
print(index, testArray[index])
end

แทรกรายการ

มีวิธีในตัวสองวิธีในการแทรกรายการไปยัง จุดสิ้นสุด ของอาเรย์:

  • ส่งอ้างอิงไปยังอาเรย์และค่ารายการไปยังฟังก์ชัน table.insert() ของ Luau
  • แทรกรายการใหม่ไปยังอาเรย์โดยใช้ไวยากรณ์ array[#array+1]

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

ในการแทรกรายการระหว่างจุดเริ่มต้นและจุดสิ้นสุดของอาเรย์ ให้รวมค่าตำแหน่งเป็นอากิวที่สองของ table.insert() นี่จะทำการแทรกรายการใหม่และเลื่อนรายการถัดไปขึ้นไปหนึ่งตำแหน่งดัชนี


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

ลบรายการ

ในการลบรายการจากอาเรย์ ให้ใช้ table.remove() นี่จะทำการลบรายการที่ตำแหน่งที่ระบุและย้ายรายการถัดไปกลับหนึ่งตำแหน่งดัชนี


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

พจนานุกรม

พจนานุกรมเป็นส่วนขยายของอาเรย์ พจนานุกรมเก็บชุดของคู่กุญแจ-ค่า ซึ่งกุญแจสามารถเป็นหมายเลข สตริง หรือออบเจ็กต์ใดก็ได้

สร้างพจนานุกรม

ในการสร้างตารางพจนานุกรม ให้กำหนดแต่ละ กุญแจ ตามด้วย = และ ค่า แยกแต่ละคู่กุญแจ-ค่าด้วยเครื่องหมายจุลภาค:


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

กุญแจสำหรับพจนานุกรมสามารถเป็นตัวเลข สตริง และออบเจ็กต์ ตัวอย่างเช่น กุญแจอาจเป็น Instance ด้วย หากต้องการใช้ออบเจ็กต์เป็นกุญแจ ให้ประกาศกุญแจในวงเล็บสี่เหลี่ยม ([key]):


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

อ่านจากพจนานุกรม

ในการอ่านจากพจนานุกรม ให้เพิ่มคู่ของวงเล็บหลังจากการอ้างอิงและระบุชื่อกุญแจ โดยอ้างอิงกุญแจสตริงโดยตรงใช้ (["key"]) หรือ (.key) หรือใช้ค่าตัวแปร ([key])


local part = Instance.new("Part")
local testDictionary = {
partType = "Block",
[part] = true
}
-- รวมคำพูดสำหรับกุญแจสตริง
print(testDictionary["partType"]) -- Block
-- หรือใช้ . เพดานแก่กุญแจสตริงที่ไม่มีช่องว่าง
print(testDictionary.partType) -- Block
-- ไม่ต้องใช้คำพูดสำหรับกุญแจที่ไม่ใช่สตริง
print(testDictionary[part]) -- true

เขียนลงในพจนานุกรม

ในการกำหนดหรือเขียนค่าใหม่ของกุญแจพจนานุกรมใหม่หรือที่มีอยู่ ให้ระบุชื่อกุญแจในวงเล็บสี่เหลี่ยม ([key]) หรือถ้ากุญแจเป็นสตริง ใช้ (.key) ตามด้วย = และค่า:


local testDictionary = {
fruitName = "Lemon",
sour = true
}
-- เปลี่ยนค่าให้กับกุญแจที่มีอยู่
testDictionary["fruitName"] = "Cherry"
testDictionary.sour = false
-- แทรกคู่กุญแจ-ค่าใหม่
testDictionary.fruitCount = 10
print(testDictionary.fruitName) -- Cherry
print(testDictionary.sour) -- false
print(testDictionary.fruitCount) -- 10

ทำซ้ำในพจนานุกรม

ในการทำซ้ำในพจนานุกรม ให้ใช้วงรอบ for:


local testDictionary = {
fruitName = "Lemon",
fruitColor = "Yellow",
sour = true
}
for key, value in testDictionary do
print(key, value)
end
--[[ ผลลัพธ์ที่ได้:
fruitName Lemon
sour true
fruitColor Yellow
]]

ลบคู่กุญแจ-ค่า

ในการลบหรือเอาคู่กุญแจ-ค่าออกจากพจนานุกรม ให้ตั้งค่าของกุญแจเป็น nil


local testDictionary = {
fruitName = "Lemon",
fruitColor = "Yellow",
sour = true
}
testDictionary.sour = nil
for key, value in testDictionary do
print(key, value)
end
--[[ ผลลัพธ์ที่ได้:
fruitName Lemon
fruitColor Yellow
]]

ตารางเป็นการอ้างอิง

หากคุณเก็บตารางในตัวแปรใหม่ Luau จะไม่สร้างสำเนาของตารางนั้น แทนที่ตัวแปรนั้นจะกลายเป็น การอ้างอิง หรือพอยน์เตอร์ไปยังตารางต้นฉบับ การอ้างอิงใดๆ ในตารางจะสะท้อนการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นในตารางต้นฉบับ:


local originalArray = {10, 20}
local arrayReference = originalArray
print("Original:", originalArray[1], originalArray[2])
print("Reference:", arrayReference[1], arrayReference[2])
-- เปลี่ยนค่าที่อยู่ในอาเรย์ต้นฉบับ
originalArray[1] = 1000
originalArray[2] = 2000
print("Reference:", arrayReference[1], arrayReference[2])
--[[ ผลลัพธ์ที่ได้:
Original: 10 20
Reference: 10 20
Reference: 1000 2000
]]

โคลนนิ่งตาราง

โคลนตื้น

ในการคัดลอกตารางโดยไม่มีตารางซ้อน Luau มีวิธีการ table.clone()


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

โคลนลึก

ในการคัดลอกตารางที่ซับซ้อนมากขึ้นที่มีตารางซ้อนอยู่ข้างใน คุณจะต้องใช้ฟังก์ชันเชิงซ้ำที่คล้ายกับต่อไปนี้:


-- ฟังก์ชันที่ใช้ในการโคลนตารางลึก
local function deepClone(original)
-- กำหนดตารางใหม่สำหรับการสำเนา
local clone = table.clone(original)
-- วนซ้ำผ่านตารางต้นฉบับเพื่อตรวจสอบค่าตาราง
-- หากพบว่าตารางเป็นค่า ให้ทำการโคลนลึกไปยังคีย์ (ดัชนี)
for key, value in original do
if type(value) == "table" then
clone[key] = deepClone(value)
end
end
-- ส่งคืนสำเนาที่ได้รับการตรวจสอบสิ้นสุดของตารางที่โคลนลึก
return clone
end

เมื่อฟังก์ชันพร้อม คุณสามารถทำการโคลนลึกตามแบบนี้:


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

แช่แข็งตาราง

การแช่แข็งตารางทำให้มันอ่านได้เพียงอย่างเดียว ซึ่งมีประโยชน์สำหรับการสร้างค่าคงที่ที่คุณไม่ต้องการที่จะเปลี่ยนแปลง การแช่แข็งจะเป็นการถาวร ไม่มีวิธีการ "ละลาย" หรือ "ไม่แช่แข็ง" ให้ตรวจสอบว่าตารางถูกแช่แข็งหรือไม่ ให้ใช้ table.isfrozen()

แช่แข็งตื้น

ในการแช่แข็งตารางโดยไม่มีตารางซ้อน Luau มีวิธีการ table.freeze()


local target = {
key = "value",
engine = "Roblox",
playerID = 505306092
}
table.freeze(target)
target.playerID = 1 --> พยายามที่จะปรับแต่งตารางที่อ่านได้เท่านั้น

แช่แข็งลึก

ในการแช่แข็งตารางที่ซับซ้อนมากขึ้นที่มีตารางซ้อนอยู่ข้างใน ให้ใช้ฟังก์ชันเชิงซ้ำที่คล้ายกับต่อไปนี้:


local function deepFreeze(target)
-- แช่แข็งตาราง
table.freeze(target)
-- ตรวจสอบแต่ละกุญแจของตารางและแช่แข็งถ้าเป็นตาราง
for _, value in target do
-- ตรวจสอบให้แน่ใจว่าค่าที่ไม่ได้แช่แข็ง; หากแช่แข็งแล้วจะเกิดข้อผิดพลาด
if type(value) == "table" and table.isfrozen(value) == false then
deepFreeze(value)
end
end
end

เมื่อฟังก์ชันพร้อมแล้ว คุณสามารถแช่แข็งลึกตารางได้ตามนี้:


local target = {
key = "value",
playerInfo = {
playerID = 505306092,
playerName = "PlayerName"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
deepFreeze(target)
target.playerInfo.playerID = 1 --> พยายามที่จะปรับแต่งตารางที่อ่านได้เท่านั้น
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ