Jenis Coercion

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

Jika Luau mencoba menggunakan value atau variabel dalam operasi, seperti aritmatika , konvensi , atau 1> peng割a1>, tetapi value bukanlah jenis yang diharapkan oleh operasi, maka Luau mengkonversi ( 4> coerces4> ) value

Aritmatika

Luau menyuruh string ke nomor dalam operasi aritmatika. Perilaku ini dibangun ke dalam Luau. Jika jenis tidak kompatibel untuk aritmatika, Luau menghasilkan kesalahan dan tidak mengeksekkan sisa script. Misalnya, Anda tidak dapat menambahkan string ke nomor jika string tidak mewakili angka.


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

Kontrasenasi

Dalam konkatenasi, Luau menekan nomor ke string. Untuk mengubah nomor menjadi string tanpa menggunakan coercion, gunakan fungsi string.format().


print("Pi is " .. math.pi) --> Pi adalah 3.1415926535898
print("Pi is " .. 3.1415927) --> Pi adalah 3.1415927
-- Putaran ke tiga tempat desimal
print("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142

Penggunaan

Beberapa properti mengharapkan beberapa jenis data, seperti ENSEMBLE atau string, tetapi Anda dapat menetapkan nilai jenis yang berbeda ke nilai yang diharapkan oleh propinsi.

Umum

Luau menekan nomor dan string nilai枚 ke dalam nama枚 penuh. Misalnya, Anda dapat menyebutkan nilai Part.Material property menggunakan nomor, string, atau nama enum penuh, dan fungsi print() selalu mencetak nama enum penuh. Ini praktik terbaik untuk menjadi eksplisit dan menggunakan nama enum


local part1 = Instance.new("Part")
part1.Parent = workspace
part1.Material = 816
print(part1.Material) -- Daftar.Bahan.Beton
local part2 = Instance.new("Part")
part2.Parent = workspace
part2.Material = "Concrete"
print(part2.Material) -- Daftar.Bahan.Beton
-- Ini adalah praktik terbaik karena itu yang paling jelas
local part3 = Instance.new("Part")
part3.Parent = workspace
part3.Material = Enum.Material.Concrete
print(part3.Material) -- Enum.Material.Concrete

WaktuHari

Properti Lighting.TimeOfDay, yang mendefinisikan apakah itu malam, hari, atau waktu lainnya, adalah representasi string dari jenis data DateTime. Jika Anda menetapkan nomor kepada Lighting.TimeOfDay, Luau mengubahnya menjadi representasi string dari jenis data 1>


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