Jika Luau mencoba menggunakan nilai atau variabel dalam operasi, seperti aritmatika , konjungsi , atau penugasan , tetapi nilainya bukan jenis yang diharapkan oleh operasi, maka Luau mengkonversi ( memaksa ) nilai untuk mengubah ketikdatanya.Paksaan terjadi saat menjalankan untuk operasi itu dan tidak mengubah nilai variabel.
Aritmatika
Luau memaksa string ke angka dalam operasi aritmatik.Perilaku ini dibangun ke Luau.Jika jenis tidak kompatibel untuk aritmatika, Luau membuang kesalahan dan tidak menjalankan sisa skrip.Sebagai contoh, Anda tidak dapat menambahkan string ke nomor jika string tidak mewakili nomor.
print(100 + "7") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- error: attempt to perform arithmetic (add) string and number
Konjungsi
Dalam konkatenasi, Luau memaksa angka menjadi string. Untuk mengkonversi angka ke string tanpa menggunakan paksaan, gunakan fungsi string.format().
print("Pi is " .. math.pi) --> Pi adalah 3.1415926535898print("Pi is " .. 3.1415927) --> Pi adalah 3.1415927-- Putaran hingga tiga tempat desimalprint("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142
Penugasan
Beberapa properti mengharapkan jenis data tertentu, seperti Enum atau string, tetapi Anda dapat menugaskan nilai jenis yang berbeda kepadanya dan Luau mengubah nilai menjadi jenis yang diharapkan properti.
Enums
Luau memaksa angka dan string nilai enum ke dalam nama enum lengkap.Sebagai contoh, Anda dapat memberi nama nilai properti Part.Material dengan angka, string, atau nama enum lengkap, dan fungsi print() selalu mencetak nama enum lengkap.Praktik terbaik adalah menjadi 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 menentukan apakah itu adalah malam, siang, atau waktu lain, adalah representasi string dari ketikdata DateTime.Jika Anda menugaskan nomor ke Lighting.TimeOfDay, Luau mengubahnya 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