Um operador é um símbolo para executar uma operação ou avaliação condicional.
Lógico
Os operadores lógicos retornam valores dependendo dos valores deBooleano dos argumentos fornecidos. Se um argumento não for false ou nil, então o operador o avalia como true . Diferente de muitas outras linguagens, o Luau considera tanto o zero quanto a string vazia como 2> true2>. A tabela a segu
Operador | Descrições |
---|---|
e | Avalia como verdadeiro apenas se ambas as condições estiverem verdadeiras |
ou | Avalia como verdadeiro se uma das condições for verdadeira |
não | Avalia como o oposto da condição |
e
O operador binário and retorna um dos dois argumentos. Se o primeiro argumento avalia para true, então retorna o segundo argumento. Caso contrário, retorna o primeiro argumento.
print(4 and 5) -- 5print(nil and 12) -- nadaprint(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 tais como if declarações e 3> 4> while4> loops3>. Por exemplo, a seguinte 7> if7> — 0> então0> declaração testa que du
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
ou
O operador binário or retorna um dos dois argumentos. Se o primeiro argumento avalia para true, então retorna o primeiro argumento. Caso contrário, retorna o segundo argumento.
local y = x or 1print(y) -- 1 porque x não existe e, portanto, é zerolocal 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) -- verdadeprint(false or false) -- falsoprint(true or false) -- verdadeprint(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 — 1> then1> testa se duas condições são verdadeiras ou não 4>ou4> 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 deBooleano oposto do argumento. Se o argumento for false ou nil, então ele retorna 1> true1> . Caso contrário, ele retorna 4> false4> .
print(not true) -- falsoprint(not false) -- verdadeprint(not nil) -- verdadeprint(not "text") -- falsoprint(not 0) -- false
Você pode usar o operador not para acionar uma condição ou loop se uma variável for false ou nil.
local nilVariable -- Variável é declarado, mas não tem valor, então é nillocal falseVariable = false -- Variável é declarado com valor de falsoif not nilVariable thenprint(nilVariable) -- Produz "nil" porque nil não é verdadeiroendif not falseVariable thenprint(falseVariable) -- Produz "false" porque falso não é verdadeiroend
Você também pode usar o operador not para testar para o oposto de uma declaração de condição múltipla inteira. No exemplo de código a seguir, os testes condicionais if — then que não é verdade que três é maior que quatro ou é verdade que cinco é 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 button : true ou false .
Operador | Descrição | Exemplo | Método metamétrico associado |
---|---|---|---|
== | Igual a | 3 == 5 → falso | __eq |
!\ | Não igual a | 3 5 → | |
> | Maior que | 3 > 5 → | |
< | Menos que | 3 → verdadeiro | __lt |
>= | Maior que ou igual a | 3 >= 5 → falso | |
Menos que ou igual a | 3 <= 5 → verdadeiro | __le |
Arítmica
Lua suporta os operadores binários padrão, juntamente com a expansão, modulo e negativa unária.
Operador | Descrição | Exemplo | Método metamétrico associado |
---|---|---|---|
+ | Adição | 1 + 1 = 2 | __adicionar |
- | Subtraição | 1 - 1 = 0 | __sub |
* | Multiplicação | 5 * 5 = 25 | __mul |
/ | Divisão | 10 / 5 = 2 | __div |
// | Divisão do Chão | 10 // 4 = 2-10 // 4 = -3 | __idiv |
^ | Exponencial | 2 ^ 4 = 16 | __pow |
% | Módulo | 13 % 7 = 6 | __mod |
- | Negação unária | -2 = 0 - 2 | __unm |
Análise de Compostos
Você pode usar operadores de atribuição de compostos para definir uma variável igual ao resultado de uma operação onde o primeiro parâmetro é o valor atual da variável.
A operação em uma atribuição de complexo ocorre uma vez. Por exemplo, se uma expressão gera um índice aleatório em uma tabela, o Luau usa o mesmo índice para ambas a operação e a atribuição.
Nos seguintes exemplos, suponha local x = 3 .
Operador | Operação | Exemplo | Novo Valor de x |
---|---|---|---|
inclui | Adição | x += 2 | 5 ] |
=-) | Subtraição | x=- 2 | 1 |
*> | Multiplicação | x*2 | 6 |
/= | Divisão | x /= 2 | 1.5 |
//= | Divisão do Chão | x //= 2 | 1 |
%= | Módulo | x %= 2 | 1 |
^= | Exponencial | x^ = 2 | 9 ] |
..= | Concatenação | x..= "Mundo!" | "3 Mundo!" |
Diversos
Os operadores miscelâneos incluem conjunção e comprimento.
Operador | Descrição | Exemplo | Método metamétrico associado |
---|---|---|---|
.. | Concata duas string | imprimir("Olá " .. "Mundo!" | __concat |
# | Comprimento da mesa | Se tableVar = 1, 2, 3 , então #tableVar == 3 . | __len |