คู่มือสำหรับพจนานุกรม

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

พจนานุกรมเป็นตารางที่เกี่ยวข้องชื่อหรือ "กุญแจ**" กับมูลค่าแทนที่จะเป็นดัชนี

ตัวอย่าง:

สังคมของ Lua จุลภาค

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

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

ระเบียนโดยตรง

เหมือน mat阵, พจนานุกรมได้รับการเก็บไว้ในแป้นหุ้มเรียบ {} เป็นต้นไม้ เส้นข้างหน้าด้วยคุณสมบัติ คู่มูลค่าสําคัญ ได้รับการเก็บไว้ในแป้นหุ้มเรียบ เป็


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("The villain " .. enemy["Name"] .. " approaches!")
print("The villain " .. enemy.Name .. " approaches!")

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

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

การเปลี่ยนค่าของกุญแจเป็นเหมือนตัวแปรอื่น ๆ คีย์=

  1. ภายใต้โต๊ะ enemy ตั้งชื่อศัตรูให้เป็นสิ่งอื่น


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("The enemy's name is " .. enemy.Name)
  2. ทดสอบและตรวจสอบหน้าต่างการออก力

แปรแกนเก่าที่เป็นตัวอักษร

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

  1. ใน ServerScriptService สร้างสคริปต์ใหม่ที่มีชื่อว่า PlayerPoints ในสคริปต์ รับบริการผู้เล่นและสร้างคําศัพท์ที่ว่างเปล่าชื่อ playerPoints


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


    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. ในคำสั่งเพิ่มแปรที่แปรผู้เล่นของคุณจะได้รับ Name คุณสมบัติในทุก ผู้เล่น วัตถุและคำอธิบายการพิมพ์สำหรับการทดสอบ


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    end
  4. ใส่ชื่อในพจนานุกรม playerPoints เป็นคีย์, และตั้งค่าค่า, คะแนนของผู้เล่น, ไว้ที่ 0.


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


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    playerPoints[name] = 0
    print(name .. " has " .. playerPoints[name] .. " points.")
    end
  6. ดำเนินโครงการและมองไปที่เครื่องมือออก力

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

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) do
print(key .. " is " .. value)
end

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


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

เมื่อดำเนินการแล้ว กำลังติดตาม:


You have:
43 Gold Bricks
3 Carrots
2 Torches

สรุป

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

พิมพ์แต่ค่าสามารถผสานประเภทข้อมูลโดยไม่มีปัญหา

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

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

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

ในสถานการณ์เหล่านี้คุณสามารถใช้ pairs() และ ipairs() ในวงแหวน for เพื่อผ่านแต่ละรายการโดยไม่มีจุดเริ่มต้นแล