Un operatore è un simbolo per eseguire un'operazione o una valutazione condizionale.
Logico
Gli operatori logici restituiscono valori a seconda dei valori booleani degli argomenti forniti. Se un argomento non è false o nil, allora l'operatore lo valuta come true. A differenza di molti altri linguaggi, Luau considera sia lo zero che la stringa vuota come true. La seguente tabella riassume il comportamento degli operatori logici nelle valutazioni condizionali.
| Operatore | Descrizioni |
|---|---|
| and | Valuta come true solo se entrambe le condizioni sono vere |
| or | Valuta come true se almeno una condizione è vera |
| not | Valuta come l'opposto della condizione |
and
L'operatore binario and restituisce uno dei due argomenti. Se il primo argomento valuta a true, allora restituisce il secondo argomento. Altrimenti, restituisce il primo argomento.
print(4 and 5) -- 5
print(nil and 12) -- nil
print(false and 12) -- false
print(false and true) -- false
print(false and false) -- false
print(true and false) -- false
print(true and true) -- truePuoi usare and per testare più condizioni nelle strutture di controllo come le if statements e i while loops. Ad esempio, la seguente dichiarazione if‑then verifica che due condizioni siano entrambe vere:
local pasta = true
local tomatoSauce = true
if pasta == true and tomatoSauce == true then
print("Abbiamo la cena di spaghetti")
else
print("Qualcosa manca...")
end
-- Output: Abbiamo la cena di spaghettior
L'operatore binario or restituisce uno dei due argomenti. Se il primo argomento valuta a true, allora restituisce il primo argomento. Altrimenti, restituisce il secondo argomento.
local y = x or 1
print(y) -- 1 perché x non esiste e quindi è nil
local d = false
local e = d or 1
print(e) -- 1 perché d è false
print(4 or 5) -- 4
print(nil or 12) -- 12
print(false or 12) -- 12
print(false or true) -- true
print(false or false) -- false
print(true or false) -- true
print(true or true) -- truePuoi usare or per eseguire test logici complessi nelle strutture di controllo. Ad esempio, la seguente dichiarazione if‑then verifica se due condizioni sono vere o se una terza condizione è vera:
local pasta = false
local tomatoSauce = true
local garlicBread = true
if (pasta == true and tomatoSauce == true) or garlicBread == true then
print("Abbiamo o la cena di spaghetti O il pane all'aglio")
else
print("Qualcosa manca...")
end
-- Output: Abbiamo o la cena di spaghetti O il pane all'aglionot
L'operatore unario not restituisce il valore booleano opposto dell'argomento. Se l'argomento è false o nil, allora restituisce true. Altrimenti restituisce false.
print(not true) -- false
print(not false) -- true
print(not nil) -- true
print(not "text") -- false
print(not 0) -- falsePuoi usare l'operatore not per attivare una condizione o un ciclo se una variabile è false o nil.
local nilVariable -- La variabile è dichiarata ma non ha valore, quindi è nil
local falseVariable = false -- La variabile è dichiarata con valore di false
if not nilVariable then
print(nilVariable) -- Mostra "nil" perché nil non è true
end
if not falseVariable then
print(falseVariable) -- Mostra "false" perché false non è true
endPuoi anche usare l'operatore not per testare l'opposto di un'intera dichiarazione con più condizioni. Nel seguente esempio di codice, la condizione if‑then verifica che non sia vero che tre è maggiore di quattro né che cinque è maggiore di quattro.
local three = 3
local four = 4
local five = 5
if not (three > four or five < four) then
print("Tre è minore di 4 e cinque è maggiore di 4.")
end
-- Output: Tre è minore di 4 e cinque è maggiore di 4.Relazionale
Gli operatori relazionali confrontano due parametri e restituiscono un boolean: true o false.
| Operatore | Descrizione | Esempio | Metamethod associato |
|---|---|---|---|
| == | Uguale a | 3 == 5 → false | __eq |
| ~= | Non uguale a | 3 ~= 5 → true | |
| > | Maggiore di | 3 > 5 → false | |
| < | Minore di | 3 < 5 → true | __lt |
| >= | Maggiore o uguale a | 3 >= 5 → false | |
| <= | Minore o uguale a | 3 <= 5 → true | __le |
Aritmetico
Luau supporta i normali operatori binari insieme a potenza, modulus e negazione unaria.
| Operatore | Descrizione | Esempio | Metamethod associato |
|---|---|---|---|
| + | Somma | 1 + 1 = 2 | __add |
| - | Sottrazione | 1 - 1 = 0 | __sub |
| * | Moltiplicazione | 5 * 5 = 25 | __mul |
| / | Divisione | 10 / 5 = 2 | __div |
| // | Divisione intera | 10 // 4 = 2 | __idiv |
| ^ | Potenziamento | 2 ^ 4 = 16 | __pow |
| % | Modulo | 13 % 7 = 6 | __mod |
| - | Negazione unaria | -2 = 0 - 2 | __unm |
Assegnazione composta
Puoi usare operatori di assegnazione composta per impostare una variabile uguale al risultato di un'operazione in cui il primo parametro è il valore corrente della variabile.
L'operazione in un'assegnazione composta avviene una sola volta. Ad esempio, se un'espressione genera un indice casuale in una tabella, Luau utilizza lo stesso indice sia per l'operazione che per l'assegnazione.
Negli esempi seguenti, supponiamo che local x = 3.
| Operatore | Operazione | Esempio | Nuovo valore di x |
|---|---|---|---|
| += | Somma | x += 2 | 5 |
| -= | Sottrazione | x -= 2 | 1 |
| *= | Moltiplicazione | x *= 2 | 6 |
| /= | Divisione | x /= 2 | 1.5 |
| //= | Divisione intera | x //= 2 | 1 |
| %= | Modulo | x %= 2 | 1 |
| ^= | Potenziamento | x ^= 2 | 9 |
| ..= | Concatenazione | x ..= " Mondo!" | "3 Mondo!" |
Varie
Gli operatori vari includono concatenazione e lunghezza.
| Operatore | Descrizione | Esempio | Metamethod associato |
|---|---|---|---|
| .. | Concatena due stringhe | print("Ciao " .. "Mondo!") | __concat |
| # | Lunghezza della tabella | Se tableVar = {1, 2, 3}, allora #tableVar == 3. | __len |