Loại cưỡng bức

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

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") -- 107
print(100 - "7") -- 93
print("1000" + 234) -- 1234
print("1000" - 234) -- 766
print("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.1415926535898
print("Pi is " .. 3.1415927) --> Pi là 3.1415927
-- Vòng đến ba chỗ thập phân
print("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 = 816
part1.Parent = Workspace
print(part1.Material) -- Enum.Material.Concrete
local part2 = Instance.new("Part")
part2.Material = "Concrete"
part2.Parent = Workspace
print(part2.Material) -- Enum.Material.Concrete
-- Đây là tốt nhất thực hành bởi vì nó là rõ ràng nhất
local part3 = Instance.new("Part")
part3.Material = Enum.Material.Concrete
part3.Parent = Workspace
print(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:00
Lighting.TimeOfDay = 5
print(Lighting.TimeOfDay) -- 05:00:00