Tipo di coercione

*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 变수 in un'operazione, come aritmetica , concatenazione o 2>assegnazione2>, ma il valore non è il tipo che l'operazione si aspetta, allora Luau lo convertisce ( 5>coerce5> ) il valore per cambiare il suo inserisci / scrividi dati

Aritmetica

Luau costringe le stringhe ai numeri in operazioni aritmetiche . Questo comportamento è costruito in Luau. Se i tipi non sono incompatibili per l'aritmetica, Luau throws an error and doesn't run the rest of the 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 forza i numeri a stringhe. Per convertire un numero in una stringa senza usare la coercion, usa la funzione string.format() .


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

Attribuzione

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

Enums

Luau forza i numeri e le stringhe di valori nell'ambito del nome completo dell'enum. Ad esempio, puoi nominare il valore della proprietà Part.Material usando un numero, una Stringao un nome completo dell'enum, e la funzione print() stampa sempre il nome dell'enum completo. È meglio essere esplicito e usare il nome completo dell'enum. Per ulteriori informazioni


local part1 = Instance.new("Part")
part1.Parent = workspace
part1.Material = 816
print(part1.Material) -- Enum.Material.Concrete
local part2 = Instance.new("Part")
part2.Parent = workspace
part2.Material = "Concrete"
print(part2.Material) -- Enum.Material.Concrete
-- Questa è la migliore pratica perché è la più esplicita
local part3 = Instance.new("Part")
part3.Parent = workspace
part3.Material = Enum.Material.Concrete
print(part3.Material) -- Enum.Material.Concrete

Tempo di giorno

La ProprietàLighting.TimeOfDay , che definisce se è notte, giorno o qualsiasi altro momento, è una rappresentazione di stringa dei dati DateTime . Se assegnate un numero a Lighting.TimeOfDay , Luau lo convertisce in una rappresentazione di stringa di 1> Datatype.DateTime1> .


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