Nếu Luau cố gắng sử dụng một giá trị hoặc biến trong một phép toán, chẳng hạn như toán học, nối chuỗi, hoặc gán, nhưng giá trị không phải là kiểu mà phép toán mong đợi, thì Luau sẽ chuyển đổi (ép kiểu) giá trị đó để thay đổi kiểu dữ liệu của nó. Việc ép kiểu xảy ra tại thời điểm thực thi cho phép toán đó và không thay đổi giá trị của biến.
Toán học
Luau ép các chuỗi thành số trong các phép toán toán học. Hành vi này được tích hợp sẵn trong Luau. Nếu các kiểu không tương thích cho việc tính toán, Luau sẽ ném ra một lỗi và không thực thi phần còn lại của kịch bản. Ví dụ, bạn không thể cộng một chuỗi với 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) -- lỗi: cố gắng thực hiện phép toán (cộng) chuỗi và số
Nối chuỗi
Trong nối chuỗi, Luau sẽ ép các số thành chuỗi. Để chuyển đổi một số thành chuỗi mà không sử dụng ép kiểu, hãy sử dụng hàm string.format().
print("Pi là " .. math.pi) --> Pi là 3.1415926535898print("Pi là " .. 3.1415927) --> Pi là 3.1415927-- Làm tròn đến ba chữ số thập phânprint("Pi là " .. string.format("%.3f", 3.1415927)) -- Pi là 3.142
Gán
Một số thuộc tính mong đợi các kiểu 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 một giá trị khác kiểu cho nó và Luau sẽ chuyển đổi giá trị thành kiểu mà thuộc tính mong đợi.
Enums
Luau ép các số và chuỗi của 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 cách sử dụng một số, chuỗi, hoặc tên enum đầy đủ, và hàm print() luôn in tên enum đầy đủ. Thực hành tốt nhất là 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à thực hành tốt nhất vì nó 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, xác định xem đó là ban đêm, ban ngày, hoặc thời gian khác, là một chuỗi đại diện cho kiểu dữ liệu DateTime. Nếu bạn gán một số cho Lighting.TimeOfDay, Luau sẽ chuyển đổi nó thành chuỗi đại diện cho DateTime.
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00