Jenis pemaksaan

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

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") -- 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

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.1415926535898
print("Pi is " .. 3.1415927) --> Pi adalah 3.1415927
-- Putaran hingga tiga tempat desimal
print("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 = 816
part1.Parent = Workspace
print(part1.Material) -- Enum.Material.Concrete
local part2 = Instance.new("Part")
part2.Material = "Concrete"
part2.Parent = Workspace
print(part2.Material) -- Enum.Material.Concrete
-- Ini adalah praktik terbaik karena paling eksplisit
local part3 = Instance.new("Part")
part3.Material = Enum.Material.Concrete
part3.Parent = Workspace
print(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:00
Lighting.TimeOfDay = 5
print(Lighting.TimeOfDay) -- 05:00:00