Um operador é um símbolo para realizar uma operação ou avaliação condicional .
Lógico
Operadores lógicos retornam valores dependendo dos valores booleanos dos argumentos dados.Se um argumento não for false ou nil, então o operador o avalia como true.Ao contrário de muitos outros idiomas, Luau considera tanto o zero quanto a string vazia como true.A tabela a seguir resume como os operadores lógicos se comportam em condicionais.
Operador | Descrições |
---|---|
and | Avalia como true apenas se ambas as condições forem verdadeiras |
or | Avalia como true se uma das condições for verdadeira |
not | Avalia como o oposto da condição |
e
O operador binário and retorna um dos dois argumentos.Se o primeiro argumento for avaliado para true, então ele retorna o segundo argumento.Caso contrário, ele retorna o primeiro argumento.
print(4 and 5) -- 5print(nil and 12) -- nenhumprint(false and 12) -- falsoprint(false and true) -- falsoprint(false and false) -- falsoprint(true and false) -- falsoprint(true and true) -- true
Você pode usar and para testar várias condições em estruturas de controle como if declarações e while loops .Por exemplo, a seguinte declaração if - then testa que duas condições são ambas verdadeiras:
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
O operador binário or retorna um dos dois argumentos.Se o primeiro argumento for avaliado para true, então ele retorna o primeiro argumento.Caso contrário, ele retorna o segundo argumento.
local y = x or 1print(y) -- 1 porque x não existe e, portanto, é nulolocal d = falselocal e = d or 1print(e) -- 1 porque d é falsoprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- verdadeiroprint(false or false) -- falsoprint(true or false) -- verdadeiroprint(true or true) -- true
Você pode usar or para executar testes lógicos complexos em estruturas de controle.Por exemplo, a seguinte declaração if - then testa se duas condições são verdadeiras ou uma terceira condição é verdadeira:
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
não
O operador unário not retorna o valor booleano oposto do argumento.Se o argumento for false ou nil, então ele retorna true .Caso contrário, ele retorna false .
print(not true) -- falsoprint(not false) -- verdadeiroprint(not nil) -- verdadeiroprint(not "text") -- falsoprint(not 0) -- false
Você pode usar o operador not para disparar um condicional ou loop se uma variável for false ou nil.
local nilVariable -- A variável é declarada, mas não tem valor, então é nillocal falseVariable = false -- Variável é declarada com o valor de falsoif not nilVariable thenprint(nilVariable) -- Produz "nil" porque nil não é verdadeiroendif not falseVariable thenprint(falseVariable) -- Produz "false" porque falso não é verdadeend
Você também pode usar o operador not para testar o oposto de uma declaração multi-condicional inteira.No seguinte exemplo de código, os testes condicionais if - then que não é verdade que três seja maior que quatro nem é verdade que cinco seja maior que quatro.
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.
Relacionais
Operadores relacionais comparam dois parâmetros e retornam um : ou .
Operador | Descrição | Exemplo | Método metálico associado |
---|---|---|---|
== | Equivalente a | 3 == 5 → false | __eq |
~= | Não igual a | 3 ~= 5 → true | |
> | Maior que | 3 > 5 → false | |
< | Menos do que | 3 < 5 → true | __lt |
>= | Maior que ou igual a | 3 >= 5 → false | |
<= | Menos de ou igual a | 3 <= 5 → true | __le |
Aritmética
O Luau suporta os operadores binários habituais, juntamente com a exponenciação, o módulo e a negação unária.
Operador | Descrição | Exemplo | Método metálico associado |
---|---|---|---|
+ | Adição | 1 + 1 = 2 | __add |
- | Subtração | 1 - 1 = 0 | __sub |
* | Multiplicação | 5 * 5 = 25 | __mul |
/ | Divisão | 10 / 5 = 2 | __div |
// | Divisão de Chão | 10 // 4 = 2``-10 // 4 = -3 | __idiv |
^ | Exponenciação | 2 ^ 4 = 16 | __pow |
% | Módulo | 13 % 7 = 6 | __mod |
- | Negação unária | -2 = 0 - 2 | __unm |
Designação composta
Você pode usar operadores de atribuição composta para definir uma variável igual ao resultado de uma operação em que o primeiro parâmetro é o valor atual da variável.
A operação em uma designação composta ocorre uma vez.Por exemplo, se uma expressão gera um índice aleatório em uma tabela, o Luau usa o mesmo índice para a operação e a atribuição.
Nos seguintes exemplos, suponha local x = 3.
Operador | Operação | Exemplo | Novo valor de x |
---|---|---|---|
+= | Adição | x += 2 | 5 |
-= | Subtração | x -= 2 | 1 |
*= | Multiplicação | x *= 2 | 6 |
/= | Divisão | x /= 2 | 1.5 |
//= | Divisão de Chão | x //= 2 | 1 |
%= | Módulo | x %= 2 | 1 |
^= | Exponenciação | x ^= 2 | 9 |
..= | Concatenação | x ..= " World!" | "3 World!" |
Diversos
Operadores miscelâneos incluem concatenação e comprimento .
Operador | Descrição | Exemplo | Método metálico associado |
---|---|---|---|
.. | Conjunta duas strings | print("Hello " .. "World!") | __concat |
# | Comprimento da tabela | Se tableVar = {1, 2, 3} , então #tableVar == 3 . | __len |