ตาราง

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

ประเภทข้อมูล ตาราง สามารถเก็บข้อมูลหลายประเภทที่ไม่ใช่ nil รวมถึง booleans 1> ตัวเลข1> 4> สตริง4> 7> ฟังก์ชัน</


-- สร้างตารางที่ว่างไว้ที่แป้น "t"
local t = {}
print(t) -- {}

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

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

รายการ

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

การสร้างรายการ

เพื่อสร้างรายการโดยใช้ตาราง Luau ประกาศค่าในลำดับต่อไปโดยมีจุลภาคหัวข้อด้วยคุณลักษณะที่แยกกับจุลภาค


-- สร้างรายการที่มีสามรายการ
local testArray = {"A string", 3.14159, workspace.Camera}
print(testArray)

การอ่านจากแมทริค

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


-- สร้างรายการที่มีสามรายการ
local testArray = {"A string", 3.14159, workspace.Camera}
print(testArray[1]) -- สตริง
print(testArray[2]) -- 3.14159 ตัว
print(testArray[3]) -- Camera

การเขียนโค้ดในแมทริค

เพื่อกำหนดหรือเขียนใหม่ค่าของตารางที่อยู่ในดัชนีให้ประกาศหมายเลขดัชนีในเชิญอักษร ( [index] ) ต่อด้วย = และมูลค่า:


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

ทำซ้ำรายการโดยใช้แมทริค

เพื่อทำซ้ำรายการ คุณสามารถใช้วงเลข for ห่วง เพราะรายการมีด้วยหัวข้อหลักของจำนวน คุณยังสามารถใช้วงเลข for จาก 1 ไปยังความยาวของรายการ (


local testArray = {"A string", 3.14159, workspace.Camera, "New string"}
-- ใช้วิทยุทั่วไปเพื่อเรียก
for index, value in testArray do
print(index, value)
end
-- ทำซ้ำโดยใช้ตัวปรับความยาวของรายการ (#)
for index = 1, #testArray do
print(index, testArray[index])
end
--[[ ผลลัพธ์ออก:
1 A string
2 3.14159
3 Camera
4 New string
1 A string
2 3.14159
3 Camera
4 New string
]]

การใส่ไอเทม

มีวิธีการอิงสองอย่างที่อยู่ในตัวเองของรายการในตำแหน่ง ต้น ของค่าย่อ:

  • ส่งอ้างอิงไปยังแผงและมูลค่ารายการให้กับ Luau's table.insert() ฟังก์ชัน
  • เพิ่มรายการใหม่ลงในรายการโดยใช้คําสั่ง array[#array+1]

local testArray = {"A string", 3.14159}
table.insert(testArray, "New string")
testArray[#testArray+1] = "Another new string"
print(testArray[3]) -- สตริงใหม่
print(testArray[4]) -- Another new string

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


local testArray = {"First item", "Next item"}
table.insert(testArray, 2, "NEW ITEM #2")
print(testArray[1]) -- ไอเท็ม
print(testArray[2]) -- รายการใหม่ #2
print(testArray[3]) -- Next item

การลบรายการ

เพื่อลบรายการจากค่ายี่สิบของรายการ ใช้ table.remove() เพื่อลบรายการที่อยู่ในตำแหน่งที่กำหนดและย้ายรายการต่อไปอีกหนึ่งตำแหน่งด้านหลัง


local testArray = {"First item", "Next item", "Last item"}
table.remove(testArray, 2)
print(testArray[1]) -- ไอเท็ม
print(testArray[2]) -- Last item

สารานุกรม

พจนานุกรมเป็นขยายของรายการ พจนานุกรมเก็บชุดของค่าสัมพันธ์สำคัญ ๆ โดยมีคีย์เป็นตัวอักษร สตริง หรือตัวอักษรใด ๆ ที่สามารถเป็นได้

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

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


local testDictionary = {
FruitName = "Lemon",
FruitColor = "Yellow",
Sour = true
}

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


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

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

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


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

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

เพื่อกำหนดหรือเขียนใหม่ของค่าของตัวอักษรจดหมายใหม่หรือเก่า ให้ชื่อคีย์ในเชิงเส้น ( [key] ติดตั้งด้วย = และมูลค่า:


local testDictionary = {
FruitName = "Lemon",
Sour = true
}
-- เปลี่ยนค่าของกุญแจที่มีอยู่
testDictionary["FruitName"] = "Cherry"
testDictionary["Sour"] = false
-- ใส่คู่สมุดเค้าโครงใหม่
testDictionary["FruitCount"] = 10
print(testDictionary["FruitName"]) -- เชอร์รี่
print(testDictionary["Sour"]) -- ปลอม
print(testDictionary["FruitCount"]) -- 10

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

เพื่อทำซ้ำจากพจนานุกรมให้ใช้คุณสมบัติ global pairs() ในวงล้อ for เช่น


local testDictionary = {
FruitName = "Lemon",
FruitColor = "Yellow",
Sour = true
}
for key, value in pairs(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 pairs(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])
-- เปลี่ยนค่าใน mat阵
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 deepCopy(original)
-- กำหนดตารางใหม่สำหรับคัดลอก
local copy = {}
-- สแน็ปผ่านตารางแรกเพื่อคลอน
for key, value in original do
-- หากประเภทของค่าเป็นตาราง ให้วางสำเนาลึกไปยังคีย์ (อินเด็กซ์)
-- อื่น (หรือ) ชนิดไม่ใช่ตาราง กำหนดค่าเริ่มต้นให้กับดัชนีแทน
copy[key] = type(value) == "table" and deepCopy(value) or value
end
-- ส่งคัดลอกที่สรุปของตารางที่เคลือนย้ายลึก
return copy
end

ด้วยคุณสมบัติในตำแหน่ง คุณสามารถสร้างคุณสมบัติลึกด้วยวิธีต่อไปนี้:


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

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

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

ระดับต่ำ

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


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

แช่แข็งลึก

เพื่อแช่แข็งตารางที่ซับซ้อนมากขึ้นด้วยตารางที่เรียงลำดับอยู่ภายในมันโดยใช้คุณสมบัติที่ซ้ำกันในส่วนต่อไปนี้:


local function deepFreeze(target)
-- ปรับปรุงโต๊ะให้แข็งแรง
table.freeze(target)
-- ตรวจสอบแต่ละรหัสในตารางและแช่แข็งมันหากเป็นตาราง
for _, v in target do
if type(v) == "table" then
deepFreeze(v)
end
end
end

สถานที่คุณสามารถแช่แข็งตารางได้ด้วยวิธีต่อไปนี้:


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