หาก Luau พยายามใช้ค่าหรือ ตัวแปร ในการดำเนินการ เช่น เลขคณิต, การต่อสาย หรือ การกำหนดค่า แต่ค่าไม่ใช่ประเภทที่การดำเนินการคาดหวัง Luau จะเปลี่ยนค่าดังกล่าว (บังคับ เปลี่ยน) เพื่อปรับเปลี่ยนประเภทข้อมูลของมัน การบังคับประเภทจะเกิดขึ้นในเวลาเรียกทำงานสำหรับการดำเนินการนั้นและไม่เปลี่ยนค่าของตัวแปร
เลขคณิต
Luau บังคับให้สตริงกลายเป็นตัวเลขใน การดำเนินการเลขคณิต พฤติกรรมนี้ถูกฝังอยู่ใน Luau หากประเภทไม่เข้ากันสำหรับการดำเนินการเลขคณิต Luau จะสร้างข้อผิดพลาดและจะไม่ทำงานในส่วนอื่นของสคริปต์ ตัวอย่างเช่น คุณไม่สามารถนำสตริงไปบวกกับตัวเลขได้หากสตริงนั้นไม่เป็นตัวเลข
print(100 + "7") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- error: attempt to perform arithmetic (add) string and number
การต่อสาย
ในการต่อสาย Luau จะบังคับให้ตัวเลขกลายเป็นสตริง เพื่อแปลงตัวเลขเป็นสตริงโดยไม่ใช้การบังคับประเภท ให้ใช้ฟังก์ชัน string.format()
print("Pi is " .. math.pi) --> Pi is 3.1415926535898print("Pi is " .. 3.1415927) --> Pi is 3.1415927-- ปรับให้เป็นทศนิยม 3 ตำแหน่งprint("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142
การกำหนดค่า
คุณสมบัติบางอย่างคาดหวังประเภทข้อมูลที่เฉพาะเจาะจง เช่น Enum หรือสตริง แต่คุณสามารถกำหนดค่าที่มีประเภทต่างกันให้กับมัน และ Luau จะเปลี่ยนค่าดังกล่าวเป็นประเภทที่คุณสมบัติคาดหวัง
Enums
Luau จะบังคับตัวเลขและสตริงของค่า enum ให้กลายเป็นชื่อ enum เต็ม สำหรับตัวอย่าง คุณสามารถตั้งค่าของคุณสมบัติ Part.Material โดยใช้ตัวเลข สตริง หรือชื่อ enum เต็ม และฟังก์ชัน print() จะพิมพ์ชื่อ enum เต็มเสมอ การใช้ชื่อ enum เต็มเป็นวิธีปฏิบัติที่ดีที่สุด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Enums ให้ดูที่ Enums
local Workspace = game:GetService("Workspace")local part1 = Instance.new("Part")part1.Material = 816part1.Parent = Workspaceprint(part1.Material) -- Enum.Material.Concretelocal part2 = Instance.new("Part")part2.Material = "Concrete"part2.Parent = Workspaceprint(part2.Material) -- Enum.Material.Concrete-- วิธีนี้เป็นวิธีปฏิบัติที่ดีที่สุดเพราะชัดเจนที่สุดlocal part3 = Instance.new("Part")part3.Material = Enum.Material.Concretepart3.Parent = Workspaceprint(part3.Material) -- Enum.Material.Concrete
เวลาของวัน
คุณสมบัติ Lighting.TimeOfDay ซึ่งกำหนดว่านี่คือเวลากลางคืน เวลากลางวัน หรือช่วงเวลาใดเป็นการแทนค่าด้วยสตริงของประเภทข้อมูล DateTime หากคุณกำหนดค่าตัวเลขให้กับ Lighting.TimeOfDay Luau จะเปลี่ยนมันเป็นการแทนค่าด้วยสตริงของ DateTime
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00