Type d'obligation

*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, 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") -- 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 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.1415926535898
print("Pi is " .. 3.1415927) --> Pi est 3.1415927
-- Manches à trois décimales
print("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 = workspace
part1.Material = 816
print(part1.Material) -- enum.Material.Concrete
local part2 = Instance.new("Part")
part2.Parent = workspace
part2.Material = "Concrete"
print(part2.Material) -- enum.Material.Concrete
-- C'est la meilleure pratique parce que c'est la plus explicite
local part3 = Instance.new("Part")
part3.Parent = workspace
part3.Material = Enum.Material.Concrete
print(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:00
Lighting.TimeOfDay = 5
print(Lighting.TimeOfDay) -- 05:00:00