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

*เนื้อหานี้แปลโดยใช้ 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. ในฟังก์ชัน เพิ่มตัวแปรเพื่อดึง Name ของผู้เล่น ซึ่งเป็นคุณสมบัติในทุกๆ Player object และคำสั่งพิมพ์สำหรับการทดสอบ

    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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ