พจนานุกรมเป็นตารางที่เกี่ยวข้องชื่อหรือ "กุญแจ**" กับมูลค่าแทนที่จะเป็นดัชนี
ตัวอย่าง:
สังคมของ Lua จุลภาค
local pet = {Name = "Bobbie",Type = "Dog",}
ผู้เล่นไม่เพียง แต่รายการพจนานุกรมในลำดับที่เป็นรายการในแนวเส้นเชิญเหมือนที่คุณทำในการฝึกซ้อมโดยใช้พจนานุกรมในชุดนี้ในชุดนี้
ระเบียนโดยตรง
เหมือน mat阵, พจนานุกรมได้รับการเก็บไว้ในแป้นหุ้มเรียบ {} เป็นต้นไม้ เส้นข้างหน้าด้วยคุณสมบัติ คู่มูลค่าสําคัญ ได้รับการเก็บไว้ในแป้นหุ้มเรียบ เป็
local playerNames = {player1 = "Zap",player2 = "Kel",}print(playerNames["player1"])
เพื่ออ้างอิงรายการหรือวัตถุอื่นที่เป็นส่วนหนึ่งของคีย์ให้ใช้เครื่องหมาย
local greenPart = workspace.GreenPartlocal redPart = workspace.RedPartlocal partList = {[greenPart] = true,[redPart] = false,}print(partList[redPart])
การสร้างพจนานุกรม
การใช้จัดอันดับพจนานั้นเป็นวิธีที่ดีในการจัดการข้อมูลของผู้เล่นหรือตัวละคร ขั้นตอนนี้สำรวจวิธีที่ข้อมูลของตัวละครศัตรูทางทฤษฎีสามารถเก็บได้และเข้าถึงได้
ในสคริปต์ใหม่, สร้างพจนานุกรมที่มีชื่อว่า enemy
local enemy = {}กุญแจตัวแรกในพจนารีจะติดตามชื่อของศัตรูด้วยแปรที่เรียกว่า Name
local enemy = {Name}กำหนดชื่อศัตรูให้กับกุญแจ, ติดตั้งด้วยจุลภาค
local enemy = {Name = "Spike",}เพิ่มคู่ค่าคีย์สองค่าเพื่อแสดงจำนวนเงินสุขภาพที่ควรมีของศัตรู พิมพ์แต่ค่าไม่จำเป็นต้องใช้
local enemy = {Name = "Spike",Health = 1000,}
ใช้ค่าจากพจนานุกรม
มีสองวิธีในการเข้าถึงค่าจากพจนานุกรม: tableName["keyName"] -- หมายเหตุข้อมูลเสร็จ tableName.keyName
local enemy = {Name = "Spike",Health = 1000,}print("The villain " .. enemy["Name"] .. " approaches!")print("The villain " .. enemy.Name .. " approaches!")
สไตล์ที่ใช้โดยปกติขึ้นอยู่กับวัตถุประสงค์ของตาราง สำหรับตารางที่มีคอลเลกชันของมูลค่าเช่นรายชื่อผู้เล่นในเซิร์ฟเวอร์ นักเขียนโปรแกรมจะมักใช้ tableName ["keyName"] สำหรับตารางที่อธิบายวัต
เปลี่ยนค่าจากพจนานุกรม
การเปลี่ยนค่าของกุญแจเป็นเหมือนตัวแปรอื่น ๆ คีย์=
ภายใต้โต๊ะ enemy ตั้งชื่อศัตรูให้เป็นสิ่งอื่น
local enemy = {Name = "Spike",Health = 1000,}enemy.Name = "Rana"print("The enemy's name is " .. enemy.Name)ทดสอบและตรวจสอบหน้าต่างการออก力
แปรแกนเก่าที่เป็นตัวอักษร
จิตรวจาร์ทูตสามารถใช้ปริญญาณอันมีอยู่แล้วในส่วนอื่นของสคริปต์ ตัวอย่างการเขียนโค้ดต่อไปนี้ใช้ตัวแปรเพื่อเพิ่มชื่อผู้เล่นให้เป็นกุญแจเมื่อพวกเขาเข้าร่วมประสบการณ์แล้วจากนั้นก็ตั้งค่า
ใน ServerScriptService สร้างสคริปต์ใหม่ที่มีชื่อว่า PlayerPoints ในสคริปต์ รับบริการผู้เล่นและสร้างคําศัพท์ที่ว่างเปล่าชื่อ playerPoints
local Players = game:GetService("Players")local playerPoints = {}จัดเตรียมคุณสมบัติสำหรับการตั้งค่าคะแนนผู้เล่นด้วยตัวแปรสำหรับตัวแปรผู้เล่นใหม่ เชื่อมต่อตัวฟังก์ชันไปยังเหตุการณ์ Players.PlayerAdded
local playerPoints = {}local function setPoints(newPlayer)endPlayers.PlayerAdded:Connect(setPoints)ในคำสั่งเพิ่มแปรที่แปรผู้เล่นของคุณจะได้รับ Name คุณสมบัติในทุก ผู้เล่น วัตถุและคำอธิบายการพิมพ์สำหรับการทดสอบ
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)endใส่ชื่อในพจนานุกรม playerPoints เป็นคีย์, และตั้งค่าค่า, คะแนนของผู้เล่น, ไว้ที่ 0.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)playerPoints[name] = 0endใช้ name เพื่อพิมพ์ชื่อผู้เล่นและ playerPoints[name] เพื่อพิมพ์มูลค่าของกุญแจที่ตรงกับตัวแปร
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)playerPoints[name] = 0print(name .. " has " .. playerPoints[name] .. " points.")endดำเนินโครงการและมองไปที่เครื่องมือออก力
สคริปต์ที่เสร็จสิ้น
local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("hello " .. name)
playerPoints[name] = 0
print(name .. " has " .. playerPoints[name] .. " points.")
end
Players.PlayerAdded:Connect(setPoints)
ความท้าทายที่อาจเกิดขึ้น
ด้านล่างนี้คือความท้าทายบางอย่างที่ใช้ได้กับการใช้จิตราคาร์ทในแต่ละวิธี ดูว่าคุณสามารถสร้างรหัสสำหรับสิ่งเหล่านี้ได้หรือไม่
- สร้างส่วนกับดักที่ทำลายผู้เล่นในระยะเวลาหนึ่ง เมื่อผู้เล่นแตะต้องกับดัก สร้างความเสียหายให้กับพวกเขา รอ, แล้วเล่นด้วยความเสียหายอีกครั้ง
- สร้างคุณสมบัติที่ตรวจสอบว่าผู้เล่นคนหนึ่งมีแต้มมากที่สุดโดยการเข้าถึงพจนานุกรม
- สร้างรหัสเข้า/รหัสออก เป็นระบบแลกเปลี่ยนคำหนึ่งเป็นอีกคำหนึ่งเพื่อสร้างรหัส "ลับ" เช่นวิธีที่ตัวอักษร "A" สามารถแลกเปลี่ยนกับ "G" หรือวิธีที่คำ "แอปเปิล" สามารถแลกเปลี่ยนกับ "สีส้ม"
พจนานุกรมและคู่()
pairs() เป็นตัวแปรที่มักใช้เพื่อทำซ้ำผ่าน พจนานุกรม ตัวอย่างดูด้านล่าง
local myDictionary = {["Blue Player"] = "Ana",["Gold Player"] = "Binh",["Red Player"] = "Cate",}for key, value in pairs(myDictionary) doprint(key .. " is " .. value)end
pairs() สามารถใช้เพื่อทำงานร่วมกับรหัส คีย์หรือทั้งสอง ในตัวอักษรดิกชันด้านล่าง ตัวแรกเป็นรหัส ตัวที่สองเป็นค่า ดิกชันที่คุณต้องการทำงานด้วยได้รับผ่านไปยั
local inventory = {["Gold Bricks"] = 43,Carrots = 3,Torches = 2,}print("You have:")for itemName, itemValue in pairs(inventory) doprint(itemValue, itemName)end
เมื่อดำเนินการแล้ว กำลังติดตาม:
You have:43 Gold Bricks3 Carrots2 Torches
สรุป
พจนานุกรมเป็นตารางที่ใช้คู่ค่าเป็นสองสามค่าแทนที่จะเป็นค่าในดัชนี พจนานุกรมและรายการจะเริ่มต้นด้วยการกำหนดตัวอักษรเริ่มต้นด้วยเครื่องหมายการแยกกับจุลภาค
พิมพ์แต่ค่าสามารถผสานประเภทข้อมูลโดยไม่มีปัญหา
รูปแบบในการเข้าถึงพจนานุกรมสามารถสื่อความหมายของพจนานุกรมได้ พจนานุกรมของคุณนักธนูอาจถูกเข้าถึงด้วยตัวดำเนินการดอท ในขณะที่รายการชื่อจะใช้ชื่อโต๊ะโดยใช้ tableName[keyName]
เมื่อใช้แท็กให้ระวัง ชื่อสําคัญที่ถูกสร้างภายในตารางจะต้องได้รับการรักษาเป็นสตริง: tableName["keyName"] อย่างไรก็ตามเมื่ออ้างอิงเหมือนวัตถุเช่นชิ้นส่วนจะไม่จําเป็นต้อง
หลายตัวอักษรจำเป็นต้องผ่านจาร์นามาร์จีซันหรือดิกชัน แต่คุณอาจไม่รู้จักจุดเริ่มต้นและจุดสิ้นสุดของโครงสร้างข้อมูลเหล่านี้ เช่น จาร์นามันของผู้เล่นอาจเปลี่ยนแปลง หรือผู้เล่นอาจมีค่าตัว
ในสถานการณ์เหล่านี้คุณสามารถใช้ pairs() และ ipairs() ในวงแหวน for เพื่อผ่านแต่ละรายการโดยไม่มีจุดเริ่มต้นแล