Nếu Luau cố gắng sử dụng một giá trị hoặc biến trong một hoạt động, chẳng hạn như phép toán, liên kết, hoặc phân bổ, nhưng giá trị không phải là loại mà hoạt động mong đợi, thì Luau chuyển đổi ( ép buộc ) giá trị để thay đổi đánh máydữ liệu của nó.Áp lực xảy ra tại thời gian chạy cho hoạt động đó và không thay đổi giá trị của một biến.
Toán học
Luau buộc chuỗi thành số trong hoạt động toán học.Hành vi này được xây dựng vào Luau.Nếu các loại không tương thích với toán học, Luau ném một lỗi và không chạy phần còn lại của kịch bản.Ví dụ, bạn không thể thêm chuỗi vào một số nếu chuỗi không đại diện cho một số.
print(100 + "7") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- error: attempt to perform arithmetic (add) string and number
Sự kết hợp
Trong concatenation, Luau buộc các số thành chuỗi. Để chuyển đổi một số thành chuỗi mà không sử dụng coercion, hãy sử dụng chức năng string.format().
print("Pi is " .. math.pi) --> Pi là 3.1415926535898print("Pi is " .. 3.1415927) --> Pi là 3.1415927-- Vòng đến ba chỗ thập phânprint("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142
Phân bổ
Một số thuộc tính mong đợi một số loại dữ liệu nhất định, chẳng hạn như một Enum hoặc chuỗi, nhưng bạn có thể gán giá trị của một loại khác cho nó và Luau chuyển giá trị thành loại mà thuộc tính mong đợi.
Danh sách
Luau ép buộc các số và chuỗi các giá trị enum thành tên enum đầy đủ.Ví dụ, bạn có thể đặt tên giá trị của thuộc tính Part.Material bằng một số, chuỗi hoặc tên enum đầy đủ, và chức năng print() luôn in tên enum đầy đủ.Tốt nhất là phải rõ ràng và sử dụng tên enum đầy đủ.Để biết thêm thông tin về Enums, xem 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-- Đây là tốt nhất thực hành bởi vì nó là rõ ràng nhấtlocal part3 = Instance.new("Part")part3.Material = Enum.Material.Concretepart3.Parent = Workspaceprint(part3.Material) -- Enum.Material.Concrete
Thời gian trong ngày
Thuộc tính Lighting.TimeOfDay, định nghĩa xem có phải là đêm, ngày hay bất kỳ thời gian nào khác, là một biểu hiện đánh máychuỗi của loại dữ liệu DateTime.Nếu bạn gán một số cho Lighting.TimeOfDay, Luau chuyển nó thành đại diện chuỗi của DateTime .
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00