Eğer Luau, bir değeri veya bir değişkeni bir işlemde kullanmaya çalışırsa, örneğin aritmetik, birleştirme veya atama gibi, fakat değer, işlemin beklediği türde değilse, o zaman Luau değeri, veri türünü değiştirmek için (koerş) dönüştürür. Dönüşüm, o işlem için çalışma zamanında gerçekleşir ve bir değişkenin değerini değiştirmez.
Aritmetik
Luau, aritmetik işlemlerde dizeleri sayılara dönüştürür. Bu davranış Luau'yla yerleşiktir. Eğer türler aritmetik için uyumsuzsa, Luau bir hata fırlatır ve komut dosyasının geri kalanını çalıştırmaz. Örneğin, dize bir sayıyı temsil etmiyorsa, bir dize ile bir sayıyı toplayamazsınız.
print(100 + "7") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- hata: aritmetik (toplama) dizesi ve sayı üzerinde işlem yapma girişimi
Birleştirme
Birleştirmede, Luau sayıları dizelere dönüştürür. Bir sayıyı dizeye dönüştürmek için dönüşüm kullanmadan, string.format() fonksiyonunu kullanın.
print("Pi, " .. math.pi) --> Pi 3.1415926535898print("Pi, " .. 3.1415927) --> Pi 3.1415927-- Üç ondalık basamağa yuvarlarprint("Pi, " .. string.format("%.3f", 3.1415927)) -- Pi, 3.142
Atama
Bazı özellikler belirli veri türlerini bekler, örneğin bir Enum veya dize, ancak farklı türde bir değeri ona atayabilirsiniz ve Luau değeri, özelliğin beklediği türe dönüştürür.
Enums
Luau, enum değerlerinin sayıları ve dizeleri, tam enum adına dönüştürür. Örneğin, Part.Material özelliğinin değerini bir sayı, dize veya tam enum adı kullanarak isimlendirebilirsiniz ve print() fonksiyonu her zaman tam enum adını yazdırır. Açık olmak en iyi uygulamadır ve tam enum adını kullanmak tavsiye edilir. Enums hakkında daha fazla bilgi için Enums kısmına bakın.
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-- Bu en iyi uygulamadır çünkü en açıktırlocal part3 = Instance.new("Part")part3.Material = Enum.Material.Concretepart3.Parent = Workspaceprint(part3.Material) -- Enum.Material.Concrete
Gün Saati
Lighting.TimeOfDay özelliği, gecenin, gündüzün veya herhangi bir zamanın olup olmadığını tanımlayan, DateTime veri türünün dize temsilidir. Eğer Lighting.TimeOfDay'a bir sayı atarsanız, Luau bunu DateTime'ın dize temsilcisine dönüştürür.
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00