Wenn Luau versucht, einen Wert oder eine Variable in einer Operation wie Arithmetik, Verkettung oder Zuweisung zu verwenden, aber der Wert nicht den erwarteten Typ hat, dann wandelt Luau den Wert um (coerces) und ändert seinen Datentyp. Die Umwandlung erfolgt zur Laufzeit für diese Operation und ändert nicht den Wert einer Variablen.
Arithmetik
Luau wandelt Strings in arithmetischen Operationen in Zahlen um. Dieses Verhalten ist in Luau eingebaut. Wenn die Typen für arithmetische Operationen nicht kompatibel sind, wirft Luau einen Fehler und führt den Rest des Scripts nicht aus. Zum Beispiel können Sie einen String nicht zu einer Zahl addieren, wenn der String keine Zahl repräsentiert.
print(100 + "7") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- Fehler: Versuch, arithmetische Operation (Addieren) mit String und Zahl durchzuführen
Verkettung
Bei der Verkettung wandelt Luau Zahlen in Strings um. Um eine Zahl in einen String umzuwandeln, ohne Umwandlung zu verwenden, verwenden Sie die Funktion string.format().
print("Pi ist " .. math.pi) --> Pi ist 3.1415926535898print("Pi ist " .. 3.1415927) --> Pi ist 3.1415927-- Rundet auf drei Dezimalstellenprint("Pi ist " .. string.format("%.3f", 3.1415927)) -- Pi ist 3.142
Zuweisung
Einige Eigenschaften erwarten bestimmte Datentypen, wie z. B. ein Enum oder einen String, aber Sie können einen Wert eines anderen Typs zuweisen, und Luau wandelt den Wert in den Typ um, den die Eigenschaft erwartet.
Enums
Luau wandelt Zahlen und Strings von Enum-Werten in den vollständigen Enum-Namen um. Zum Beispiel können Sie den Wert der Eigenschaft Part.Material mit einer Zahl, einem String oder dem vollständigen Enum-Namen benennen, und die Funktion print() gibt immer den vollständigen Enum-Namen aus. Es ist eine bewährte Methode, explizit zu sein und den vollständigen Enum-Namen zu verwenden. Für weitere Informationen zu Enums siehe 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-- Das ist eine bewährte Methode, da es am explizitesten istlocal part3 = Instance.new("Part")part3.Material = Enum.Material.Concretepart3.Parent = Workspaceprint(part3.Material) -- Enum.Material.Concrete
Tageszeit
Die Eigenschaft Lighting.TimeOfDay, die definiert, ob es Nacht, Tag oder eine andere Zeit ist, ist eine String-Darstellung des Datentyps DateTime. Wenn Sie eine Zahl an Lighting.TimeOfDay zuweisen, wandelt Luau sie in die String-Darstellung von DateTime um.
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00