Jika Luau mencoba menggunakan suatu nilai atau variabel dalam suatu operasi, seperti aritmetika, penggabungan, atau penugasan, tetapi nilai tersebut bukan tipe yang diharapkan oleh operasi, maka Luau mengonversi (koersi) nilai tersebut untuk mengubah tipe datanya. Koersi terjadi pada waktu eksekusi untuk operasi tersebut dan tidak mengubah nilai dari suatu variabel.
Aritmetika
Luau mengoersi string menjadi angka dalam operasi aritmetika. Perilaku ini sudah ada di dalam Luau. Jika tipe tidak kompatibel untuk aritmetika, Luau akan melempar kesalahan dan tidak menjalankan sisa skrip. Misalnya, Anda tidak dapat menambahkan string ke angka jika string tersebut tidak mewakili angka.
print(100 + "7") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- error: attempt to perform arithmetic (add) string and number
Penggabungan
Dalam penggabungan, Luau mengoersi angka menjadi string. Untuk mengonversi angka menjadi string tanpa menggunakan koersi, gunakan fungsi string.format().
print("Pi adalah " .. math.pi) --> Pi adalah 3.1415926535898print("Pi adalah " .. 3.1415927) --> Pi adalah 3.1415927-- Membulatkan hingga tiga tempat desimalprint("Pi adalah " .. string.format("%.3f", 3.1415927)) -- Pi adalah 3.142
Penugasan
Beberapa properti mengharapkan tipe data tertentu, seperti Enum atau string, tetapi Anda dapat memberikan nilai dari tipe yang berbeda kepadanya dan Luau akan mengonversi nilai tersebut menjadi tipe yang diharapkan oleh properti.
Enums
Luau mengoersi angka dan string dari enum value menjadi nama enum lengkap. Misalnya, Anda dapat memberi nama nilai dari properti Part.Material menggunakan angka, string, atau nama enum lengkap, dan fungsi print() selalu mencetak nama enum lengkap. Praktik terbaik adalah bersikap eksplisit dan menggunakan nama enum lengkap. Untuk informasi lebih lanjut tentang Enums, lihat 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-- Ini adalah praktik terbaik karena paling eksplisitlocal part3 = Instance.new("Part")part3.Material = Enum.Material.Concretepart3.Parent = Workspaceprint(part3.Material) -- Enum.Material.Concrete
Waktu Hari
Properti Lighting.TimeOfDay, yang mendefinisikan apakah itu malam, siang, atau waktu lainnya, adalah representasi string dari tipe data DateTime. Jika Anda memberikan sebuah angka kepada Lighting.TimeOfDay, Luau akan mengonversinya menjadi representasi string dari DateTime.
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00