Si Luau essaie d'utiliser une valeur ou variable dans une opération, telle que arithmétique, concaténation ou 2> assignation2>, mais que la valeur n'est pas le type que l'opération attend, alors Luau convertit ( 5> coerces5> ) la valeur pour modifier son taperde données. La coercition
Arithmétique
Luau force les chaînes à des nombres dans opérations arithmétiques . Ce comportement est intégré dans Luau. Si les types ne sont pas incompatibles pour l'arithmétique, Luau lance une erreur et ne 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") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- error: attempt to perform arithmetic (add) string and number
Concaténation
En concaténation, Luau force les numéros en chaîne. Pour convertir un nombre en chaîne sans utiliser la coercition, utilisez la fonction string.format().
print("Pi is " .. math.pi) --> Pi est 3.1415926535898print("Pi is " .. 3.1415927) --> Pi est 3.1415927-- Manches à trois décimalesprint("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142
Attribution
Certaines propriétés attendent certains types de données, tels qu'un ENSEMBLE ou une chaîne, mais vous pouvez leur attribuer une valeur d'un type différent et Luau convertit la valeur en le type que la propriété attend.
Enums
Luau force les numéros et les valeurs des tableaux de valeurs dans le nom complet du tableau de valeurs. Par exemple, vous pouvez nommer la valeur de la propriété Part.Material en utilisant un nombre, une chaîne ou un nom de tableau complet, et la fonction print() imprime toujours le nom du tableau de valeurs complet. Il est préférable d'être explicite et d'utiliser le nom du tableau de valeurs complet
local part1 = Instance.new("Part")part1.Parent = workspacepart1.Material = 816print(part1.Material) -- enum.Material.Concretelocal part2 = Instance.new("Part")part2.Parent = workspacepart2.Material = "Concrete"print(part2.Material) -- enum.Material.Concrete-- C'est la meilleure pratique parce que c'est la plus explicitelocal part3 = Instance.new("Part")part3.Parent = workspacepart3.Material = Enum.Material.Concreteprint(part3.Material) -- Enum.Material.Concrete
Temps 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 de chaîne du taperde données DateTime. Si vous attribuez un nombre à Lighting.TimeOfDay, Luau le convertit en une représentation de chaîne du type 1> Datatype.DateTime1>.
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00