Tipo di coercizione

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

Se Luau tenta di utilizzare un valore o variabile in un'operazione, come aritmetica , concatenazione o assegnazione , ma il valore non è il tipo che l'operazione si aspetta, Luau lo converte ( coerce ) il valore per cambiare il suo inserisci / scrividi dati.La coercizione accade al momento dell'esecuzione per quell'operazione e non cambia il valore di una variabile.

Aritmetica

Luau cozza le stringhe a numeri in operazioni aritmetiche .Questo comportamento è costruito in Luau.Se i tipi sono incompatibili per l'aritmetica, Luau lancia un errore e non esegue il resto dello script.Ad esempio, non puoi aggiungere 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) -- error: attempt to perform arithmetic (add) string and number

Concatenazione

In concatenazione, Luau coerce i numeri a stringhe. Per convertire un numero in una stringa senza usare la coercizione, usa la funzione string.format().


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

Assegnazione

Alcune proprietà attendono determinati tipi di dati, come un Enum o una Stringa, ma puoi assegnare un valore di un diverso tipo a essa e Luau converte il valore al tipo che la proprietà si aspetta.

Enumi

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

Ora del giorno

La ProprietàLighting.TimeOfDay che definisce se è notte, giorno o qualsiasi altro momento, è una rappresentazione di stringa del inserisci / scrividi dati DateTime.Se assegni un numero a Lighting.TimeOfDay , Luau lo converte nella rappresentazione a 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