Un operatore **** è un simbolo per eseguire un'operazione o una valutazione condizionale.
Logico
Gli operatori logici restituiscono valori a seconda dei valori booleani dei parametri dati.Se un argomento non è false o nil, l'operatore lo valuta come true.A differenza di molte altre lingue, Luau considera sia lo zero che la stringa vuota come true .La seguente tabella riassume il modo in cui gli operatori logici si comportano nelle condizioni condizionali.
Operatore | Descrizioni |
---|---|
and | Si valuta come true solo se entrambe le condizioni sono vere |
or | Si valuta come true se una delle condizioni è vera |
not | Valuta come l'opposto della condizione |
e
L'operatore binario and restituisce uno dei due argomenti.Se il primo argomento si valuta a true , poi restituisce il secondo argomento.Altrimenti, restituisce il primo argomento.
print(4 and 5) -- 5print(nil and 12) -- nullaprint(false and 12) -- fallitoprint(false and true) -- fallitoprint(false and false) -- fallitoprint(true and false) -- fallitoprint(true and true) -- true
Puoi usare and per testare più condizioni in strutture di controllo come if dichiarazioni e while loop .Ad esempio, la seguente dichiarazione if - then testifica che due condizioni sono entrambe vere:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("We have spaghetti dinner")elseprint("Something is missing...")end-- Output: We have spaghetti dinner
or
L'operatore binario or restituisce uno dei due argomenti.Se il primo argomento si valuta a true , restituisce il primo argomento.Altrimenti, restituisce il secondo argomento.
local y = x or 1print(y) -- 1 perché x non esiste e quindi è nullolocal d = falselocal e = d or 1print(e) -- 1 perché d è falsoprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- veroprint(false or false) -- fallitoprint(true or false) -- veroprint(true or true) -- true
Puoi usare or per eseguire test logici complessi in strutture di controllo.Ad esempio, la seguente dichiarazione if - then testa se due condizioni sono vere o una terza condizione è vera:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("We have either spaghetti dinner OR garlic bread")elseprint("Something is missing...")end-- Output: We have either spaghetti dinner OR garlic bread
non
L'operatore unario not restituisce il valore booleano opposto dell'argomento.Se l'argomento è false o nil , restituisce true .Altrimenti, restituisce false .
print(not true) -- fallitoprint(not false) -- veroprint(not nil) -- veroprint(not "text") -- fallitoprint(not 0) -- false
Puoi usare l'operatore not per attivare un condizionale o un ciclo se una variabile è false o nil.
local nilVariable -- La variabile è dichiarata ma non ha valore, quindi è nullalocal falseVariable = false -- La variabile è dichiarata con il valore falsoif not nilVariable thenprint(nilVariable) -- Produce "null" perché nil non è veroendif not falseVariable thenprint(falseVariable) -- Produce "false" perché falso non è veroend
Puoi anche usare l'operatore not per testare l'opposto di un'intera dichiarazione multi-condizione.Nell'esempio di codice seguente, i test condizionali ‑ non è vero che tre è maggiore di quattro né è vero che cinque è maggiore di quattro.
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Three is less than 4 and five is greater than 4.")end-- Output: Three is less than 4 and five is greater than 4.
Relazionale
Gli operatori relazionali confrontano due parametri e restituiscono un ): o .
Operatore | Descrizione | Esempio | Metodo metametodo associato |
---|---|---|---|
== | Uguale a | 3 == 5 → false | __eq |
~= | Non uguale a | 3 ~= 5 → true | |
> | Maggiore di | 3 > 5 → false | |
< | Meno di | 3 < 5 → true | __lt |
>= | Maggiore o uguale a | 3 >= 5 → false | |
<= | Meno di o uguale a | 3 <= 5 → true | __le |
Aritmetica
Luau supporta gli operatori binari usuali insieme all'esponenziazione, al modulo e alla negazione unaria.
Operatore | Descrizione | Esempio | Metodo metametodo associato |
---|---|---|---|
+ | Aggiunta | 1 + 1 = 2 | __add |
- | Sottrazione | 1 - 1 = 0 | __sub |
* | Moltiplicazione | 5 * 5 = 25 | __mul |
/ | Divisione | 10 / 5 = 2 | __div |
// | Divisione di pavimento | 10 // 4 = 2``-10 // 4 = -3 | __idiv |
^ | Espansione | 2 ^ 4 = 16 | __pow |
% | Modalità | 13 % 7 = 6 | __mod |
- | Negazione unaria | -2 = 0 - 2 | __unm |
Assegnazione composta
Puoi usare gli operatori di assegnazione composti 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 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.
Nei seguenti esempi, supponiamo local x = 3 .
Operatore | Operazione | Esempio | Nuovo valore di x |
---|---|---|---|
+= | Aggiunta | x += 2 | 5 |
-= | Sottrazione | x -= 2 | 1 |
*= | Moltiplicazione | x *= 2 | 6 |
/= | Divisione | x /= 2 | 1.5 |
//= | Divisione di pavimento | x //= 2 | 1 |
%= | Modalità | x %= 2 | 1 |
^= | Espansione | x ^= 2 | 9 |
..= | Concatenazione | x ..= " World!" | "3 World!" |
Varie
Gli operatori vari includono concatenazione e lunghezza .
Operatore | Descrizione | Esempio | Metodo metametodo associato |
---|---|---|---|
.. | Concatena due stringhe | print("Hello " .. "World!") | __concat |
# | Lunghezza della tabella | Se tableVar = {1, 2, 3} , allora #tableVar == 3 . | __len |