Type de coercition

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Si Luau essaie d'utiliser une valeur ou variable dans une opération, comme arithmétique , concaténation ou affectation , mais que la valeur n'est pas le type auquel l'opération s'attend, Luau la convertit ( force ) en changeant son taperde données.La coercition se produit au moment de l'exécution pour cette opération et ne change pas la valeur d'une variable.

Arithmétique

Luau force les chaînes à des nombres dans les opérations arithmétiques.Ce comportement est intégré dans Luau.Si les types sont incompatibles pour l'arithmétique, Luau lance une erreur et n'exécute pas le reste du script.Par exemple, vous ne pouvez pas ajouter une chaîne à un nombre si la chaîne ne représente pas un nombre.


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

Concaténation

En concaténation, Luau force les nombres à des chaînes. Pour convertir un nombre en chaîne sans utiliser la contrainte, utilisez la fonction string.format().


print("Pi is " .. math.pi) --> Pi est 3.1415926535898
print("Pi is " .. 3.1415927) --> Pi est 3.1415927
-- Rounds à trois décimales places
print("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142

Attribution

Certaines propriétés s'attendent à certains types de données, tels qu'un Enum ou une chaîne, mais vous pouvez lui attribuer une valeur d'un autre type et Luau convertit la valeur en le type que la propriété attend.

Enums

Luau force les nombres et les chaînes de valeurs enum dans le nom complet enum.Par exemple, vous pouvez nommer la valeur de la propriété Part.Material en utilisant un nombre, une chaîne ou un nom d'enum complet, et la fonction print() imprime toujours le nom d'Enum complet.Il est recommandé d'être explicite et d'utiliser le nom complet de l'enum.Pour plus d'informations sur les enums, voir 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
-- C'est la meilleure pratique car c'est le plus explicite
local part3 = Instance.new("Part")
part3.Material = Enum.Material.Concrete
part3.Parent = Workspace
print(part3.Material) -- Enum.Material.Concrete

Heure de la journée

La propriété Lighting.TimeOfDay qui définit si c'est la nuit, le jour ou tout autre moment est une représentation en chaîne du taperde données DateTime.Si vous attribuez un nombre à Lighting.TimeOfDay, Luau le convertit en représentation de chaîne de 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