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) -- 5print(nil and 12) -- nilprint(false and 12) -- falseprint(false and true) -- falseprint(false and false) -- falseprint(true and false) -- falseprint(true and true) -- true
Puoi 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 = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("Abbiamo la cena di spaghetti")elseprint("Qualcosa manca...")end-- Output: Abbiamo la cena di spaghetti
or
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 1print(y) -- 1 perché x non esiste e quindi è nillocal d = falselocal e = d or 1print(e) -- 1 perché d è falseprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- trueprint(false or false) -- falseprint(true or false) -- trueprint(true or true) -- true
Puoi 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 = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("Abbiamo o la cena di spaghetti O il pane all'aglio")elseprint("Qualcosa manca...")end-- Output: Abbiamo o la cena di spaghetti O il pane all'aglio
not
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) -- falseprint(not false) -- trueprint(not nil) -- trueprint(not "text") -- falseprint(not 0) -- false
Puoi 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 è nillocal falseVariable = false -- La variabile è dichiarata con valore di falseif not nilVariable thenprint(nilVariable) -- Mostra "nil" perché nil non è trueendif not falseVariable thenprint(falseVariable) -- Mostra "false" perché false non è trueend
Puoi 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 = 3local four = 4local five = 5if not (three > four or five < four) thenprint("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 |