类型胁迫

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

如果 Luau 尝试使用值或 变量 在操作,例如 乘法concatenation 或 1> 分配1> ,但值不是操作期望的类型,那么 Luau 会强制将值转换为更改数据输入。 强制在运行时对变量发生,不会更改变量

arithmetic

Luau 使用 数学操作 中的数字来强制字符串。 此行为已内置在 Luau 中。如果类型与 Luau 不兼容,Luau将抛出一个错误并不会运行剩余的脚本。 例如,您不能将字符串添加到数字中,如果字符串不代表数字。


print(100 + "7") -- 107
print(100 - "7") -- 93
print("1000" + 234) -- 123456
print("1000" - 234) -- 766
print("hello" + 234) -- error: attempt to perform arithmetic (add) string and number

concatenation

在并行中,Luau强制数字变为字符串。要使用 Luau 的并行转换器,请使用 string.format() 函数。


print("Pi is " .. math.pi) --> Pi 是 3.1415926535898
print("Pi is " .. 3.1415927) --> Pi 是 3.1415927
-- 圆到三位数
print("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142

分配

一些属性期望特定数据类型,例如 枚列 或字符串,但您可以将其值分配到不同类型,并且 Luau 将其转换为期望的类型。

枚数

Luau 强制数值和枚列值到全部枚数名称。例如,您可以使用一个数字、字符串或全部枚数名称来命名 Part.Material 属性,而且打印函数总是打印完整枚数名称。 为了实现最佳实践,请使用 print() 。 有关枚数的更多信息,请参阅 Enums


local part1 = Instance.new("Part")
part1.Parent = workspace
part1.Material = 816
print(part1.Material) -- 枚数.Material.Concrete
local part2 = Instance.new("Part")
part2.Parent = workspace
part2.Material = "Concrete"
print(part2.Material) -- 枚数.Material.Concrete
-- 这是最佳实践,因为它是最明确的
local part3 = Instance.new("Part")
part3.Parent = workspace
part3.Material = Enum.Material.Concrete
print(part3.Material) -- Enum.Material.Concrete

时间的日

Class.Lighting.TimeOfDay 属性, которое定义是否为夜晚、白天或任何其他时间,是 Luau 对 DateTime 数据类输入的字符表示。如果您将数字分配为 Lighting.TimeOfDay ,Luau 将它转换为 1>Datatype.DateTime1> 的字符表示。


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