Coercizione di tipo

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Se Luau prova a utilizzare un valore o una variabile in un'operazione, come aritemtica, concatenazione o assegnazione, ma il valore non è del tipo che l'operazione si aspetta, allora Luau converte (coerce) il valore per cambiare il suo tipo di dato. La coercizione avviene durante l'esecuzione per quell'operazione e non cambia il valore di una variabile.

Aritmetica

Luau coercisce le stringhe in numeri nelle operazioni aritmetiche. Questo comportamento è integrato in Luau. Se i tipi sono incompatibili per l'aritmetica, Luau genera un errore e non esegue il resto dello script. Ad esempio, non puoi sommare una stringa a un numero se la stringa non rappresenta un numero.


print(100 + "7") -- 107
print(100 - "7") -- 93
print("1000" + 234) -- 1234
print("1000" - 234) -- 766
print("hello" + 234) -- errore: tentativo di eseguire aritmetica (somma) stringa e numero

Concatenazione

Nella concatenazione, Luau coercisce i numeri in stringhe. Per convertire un numero in una stringa senza utilizzare la coercizione, usa la funzione string.format().


print("Pi è " .. math.pi) --> Pi è 3.1415926535898
print("Pi è " .. 3.1415927) --> Pi è 3.1415927
-- Arrotonda a tre decimali
print("Pi è " .. string.format("%.3f", 3.1415927)) -- Pi è 3.142

Assegnazione

Al alcune proprietà si aspettano determinati tipi di dati, come un Enum o una stringa, ma puoi assegnare un valore di un tipo diverso e Luau converte il valore nel tipo che la proprietà si aspetta.

Enums

Luau coercisce numeri e stringhe di valori enum nel nome completo dell'enum. Ad esempio, puoi nominare il valore della proprietà Part.Material utilizzando un numero, una stringa o il nome completo dell'enum, e la funzione print() stampa sempre il nome completo dell'enum. È buona pratica essere espliciti e utilizzare il nome completo dell'enum. Per ulteriori informazioni sugli Enums, vedere 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
-- Questa è buona pratica perché è la più esplicita
local part3 = Instance.new("Part")
part3.Material = Enum.Material.Concrete
part3.Parent = Workspace
print(part3.Material) -- Enum.Material.Concrete

Orario del giorno

La proprietà Lighting.TimeOfDay, che definisce se è notte, giorno o qualsiasi altro momento, è una rappresentazione stringa del tipo di dato DateTime. Se assegni un numero a Lighting.TimeOfDay, Luau lo converte nella rappresentazione stringa di 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
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.