แนะนำเกี่ยวกับพจนานุกรม

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

พจนานุกรมเป็นตารางที่เชื่อมโยงชื่อหรือ กุญแจ กับค่าที่ไม่ใช่ดัชนี

ตัวอย่าง:

ไวยากรณ์พจนานุกรม Luau

local pet = {
Name = "Bobbie",
Type = "Dog",
}

ใช้พจนานุกรมเมื่อคุณต้องการติดป้ายค่าต่าง ๆ ไม่ใช่แค่การทำรายการตามลำดับเหมือนกับอาร์เรย์ ฝึกใช้พจนานุกรมในบทแนะนำนี้โดยการจัดการค่าที่เกี่ยวข้องกับผู้เล่น

ไวยากรณ์พจนานุกรม

เหมือนกับอาร์เรย์ พจนานุกรมจะถูกกำหนดให้กับตัวแปรโดยใช้เครื่องหมายปีกกาปีกกา {} คู่กุญแจ-ค่า จะถูกจัดเก็บในบรรทัดแยกต่างหากตามด้วยลูกน้ำ กุญแจและค่าต่าง ๆ สามารถเป็นประเภทข้อมูลใดก็ได้ รวมถึงสตริง ตัวเลข และชื่อตัวแปร


local playerNames = {
player1 = "Zap",
player2 = "Kel",
}
print(playerNames["player1"])

เมื่อต้องการอ้างอิงส่วนต่าง ๆ หรือวัตถุที่สร้างขึ้นอื่น ๆ เป็นกุญแจให้ใช้เครื่องหมายวงเล็บ


local greenPart = workspace.GreenPart
local redPart = workspace.RedPart
local partList = {
[greenPart] = true,
[redPart] = false,
}
print(partList[redPart])

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

การใช้งานทั่วไปของพจนานุกรมคือการจัดระเบียบข้อมูลของผู้เล่นหรือตัวละคร ขั้นตอนเหล่านี้สำรวจวิธีการเก็บและเข้าถึงข้อมูลของตัวละครศัตรูในทางทฤษฎี

  1. ในสคริปต์ใหม่ สร้างพจนานุกรมชื่อ enemy.


    local enemy = {
    }
  2. กุญแจแรกในพจนานุกรมจะติดตามชื่อของศัตรูด้วยตัวแปรชื่อ Name.


    local enemy = {
    Name
    }
  3. กำหนดชื่อศัตรูให้กับกุญแจ ตามด้วยลูกน้ำ


    local enemy = {
    Name = "Spike",
    }
  4. เพิ่มคู่กุญแจ-ค่าอันดับสองสำหรับจำนวนสุขภาพที่ศัตรูควรมี จำไว้ว่า กุญแจควรใช้ประเภทข้อมูลเดียวกันเสมอ แต่ค่าก็ไม่จำเป็นต้องเช่นกัน


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }

ใช้ค่าพจนานุกรม

มีสองวิธีในการเข้าถึงค่าพจนานุกรม:

  • tableName["keyName"] (ที่สำคัญโปรดทราบเครื่องหมายคำพูด)
  • tableName.keyName

local enemy = {
Name = "Spike",
Health = 1000,
}
print("ฝ่ายที่ชั่วร้าย " .. enemy["Name"] .. " กำลังเข้าใกล้!")
print("ฝ่ายที่ชั่วร้าย " .. enemy.Name .. " กำลังเข้าใกล้!")

การใช้รูปแบบใดมักขึ้นอยู่กับวัตถุประสงค์ของตาราง สำหรับตารางที่ถือคอลเลกชันของค่า เช่น รายชื่อผู้เล่นในเซิร์ฟเวอร์ ผู้เขียนโค้ดมักจะใช้ tableName["keyName"] สำหรับพจนานุกรมที่ใช้ในการอธิบายวัตถุ ผู้เขียนโค้ดมีแนวโน้มที่จะใช้ tableName.keyName.

เปลี่ยนค่าพจนานุกรม

การเปลี่ยนค่าของกุญแจเป็นไปตามที่อื่น ๆ ใช้ตัวดำเนินการเทียบเท่ากับ =

  1. ด้านล่างตาราง enemy ตั้งชื่อศัตรูให้เป็นอย่างอื่น


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("ชื่อศัตรูคือ " .. enemy.Name)
  2. ทดสอบการเล่นและตรวจสอบหน้าต่างผลลัพธ์

ตัวแปรที่มีอยู่ล่วงหน้าเป็นกุญแจ

พจนานุกรมสามารถโต้ตอบกับตัวแปรที่ประกาศไว้ในส่วนอื่น ๆ ของสคริปต์ ตัวอย่างโค้ดต่อไปนี้ใช้ตัวแปรในการเพิ่มชื่อผู้เล่นเป็นกุญแจเมื่อพวกเขาเข้าร่วมประสบการณ์ จากนั้นตั้งค่าคะแนนของพวกเขาเป็น 0

  1. ใน ServerScriptService สร้างสคริปต์ใหม่ชื่อ PlayerPoints ในสคริปต์ รับบริการ Players และสร้างพจนานุกรมว่างชื่อ playerPoints.


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. เขียนฟังก์ชันท้องถิ่นสำหรับการตั้งค่าคะแนนของผู้เล่นพร้อมพารามิเตอร์สำหรับตัวแปรผู้เล่นใหม่ เชื่อมต่อฟังก์ชันกับเหตุการณ์ Players.PlayerAdded.


    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. ในฟังก์ชัน เพิ่มตัวแปรเพื่อรับชื่อของผู้เล่น ซึ่งเป็นคุณสมบัติในทุก ๆ วัตถุ Player และเพิ่มประโยคพิมพ์เพื่อตรวจสอบ


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("สวัสดี " .. name)
    end
  4. ใส่ name ลงในพจนานุกรม playerPoints เป็นกุญแจ และตั้งค่าเป็น 0


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("สวัสดี " .. name)
    playerPoints[name] = 0
    end
  5. ใช้ name เพื่อพิมพ์ชื่อผู้เล่นและ playerPoints[name] เพื่อพิมพ์ค่าของกุญแจที่ตรงกับตัวแปร


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("สวัสดี " .. name)
    playerPoints[name] = 0
    print(name .. " มีคะแนน " .. playerPoints[name] .. " คะแนน.")
    end
  6. เรียกใช้โปรเจกต์และสังเกตผลลัพธ์

สคริปต์ที่เสร็จสิ้น

local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("สวัสดี " .. name)
playerPoints[name] = 0
print(name .. " มีคะแนน " .. playerPoints[name] .. " คะแนน.")
end
Players.PlayerAdded:Connect(setPoints)

ความท้าทายเพิ่มเติม

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

  • สร้างชิ้นส่วนกับดักที่ทำความเสียหายต่อผู้เล่นเมื่อเวลาผ่านไป เมื่อผู้เล่นสัมผัสกับกับดัก ให้ทำความเสียหายให้พวกเขา รอ จากนั้นอนุญาตให้พวกเขาได้รับความเสียหายอีกครั้ง
  • สร้างฟังก์ชันที่ตรวจสอบว่าผู้เล่นสองคนใดมีคะแนนมากที่สุดโดยการเข้าถึงพจนานุกรม
  • สร้างรหัสลับ ซึ่งเป็นระบบการสลับสตริงหนึ่งไปอีกหนึ่งเพื่อสร้างรหัส "ลับ" ตัวอย่างเช่น ตัวอักษร "A" สามารถสลับกับ "G" หรือคำว่า "apple" สามารถสลับกับ "orange"

พจนานุกรมและ pairs()

pairs() เป็นฟังก์ชันที่มักใช้เพื่อวนผ่าน พจนานุกรม ตัวอย่างเช่นเห็นได้ด้านล่าง


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " คือ " .. value)
end

pairs() สามารถใช้ในการทำงานกับกุญแจหรือค่าขององค์ประกอบพจนานุกรม หรือทั้งสองอย่าง ในลูป for ด้านล่าง ตัวแปรแรกคือกุญแจ ตัวแปรที่สองคือค่า พจนานุกรมที่คุณต้องการทำงานด้วยจะถูกส่งไปยัง pairs()


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("คุณมี:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

เมื่อรันโค้ดจะพิมพ์ดังนี้:


คุณมี:
43 Gold Bricks
3 Carrots
2 Torches

สรุป

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

กุญแจทั้งหมดภายในพจนานุกรมควรใช้ประเภทข้อมูลเดียวกัน แต่ค่าสามารถผสมประเภทข้อมูลได้โดยไม่มีปัญหา

วิธีการเข้าถึงพจนานุกรมสามารถบอกถึงวัตถุประสงค์ของมัน พจนานุกรมของคุณสมบัติของศัตรูจะถูกเข้าถึงด้วยตัวดำเนินการจุด ในขณะที่รายการชื่อจะใช้ tableName[keyName]

เมื่อใช้เครื่องหมายวงเล็บ ต้องระมัดระวัง ชื่อกุญแจที่สร้างขึ้นภายในตารางจะต้องถือว่าเป็นสตริง: tableName["keyName"] อย่างไรก็ตามเมื่ออ้างถึงวัตถุเช่นชิ้นส่วน เครื่องหมายคำพูดไม่จำเป็น: tableName[keyName]

สคริปต์หลาย ๆ ตัวต้องทำงานผ่านพจนานุกรมหรืออาร์เรย์ แต่คุณอาจไม่รู้จุดเริ่มต้นและจุดสิ้นสุดของโครงสร้างข้อมูลเหล่านี้เสมอไป ตัวอย่างเช่น พจนานุกรมของผู้เล่นอาจมีการเปลี่ยนแปลง หรือผู้เล่นอาจมีอาร์เรย์ของสินค้าคงคลังที่มีขนาดต่างกัน

ในสถานการณ์เหล่านี้ คุณสามารถใช้ pairs() และ ipairs() ในลูป for เพื่อผ่านแต่ละองค์ประกอบโดยไม่ต้องรู้จุดเริ่มต้นและจุดสิ้นสุด คุณยังสามารถใช้การวนซ้ำทั่วไปด้วยคำว่า in เพื่อวนไปรอบ ๆ องค์ประกอบโดยไม่จำเป็นต้องใช้ pairs() หรือ ipairs()

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ