Un operador **** es un símbolo para realizar una operación o una evaluación condicional.
Lógico
Los operadores lógicos devuelven valores dependiendo de los valores booleanos de los argumentos dados.Si un argumento no es false o nil , entonces el operador lo evalúa como true .A diferencia de muchos otros idiomas, Luau considera tanto cero como la cadena vacía como true .La siguiente tabla resume cómo se comportan los operadores lógicos en condicionales.
Operador | Descripciones |
---|---|
and | Se evalúa como true solo si ambas condiciones son ciertas |
or | Se evalúa como true si una de las condiciones es verdadera |
not | Se evalúa como lo opuesto a la condición |
y
El operador binario and devuelve uno de los dos argumentos.Si el primer argumento se evalúa a true , entonces devuelve el segundo argumento.Si no, devuelve el primer argumento.
print(4 and 5) -- 5print(nil and 12) -- ningunoprint(false and 12) -- falsoprint(false and true) -- falsoprint(false and false) -- falsoprint(true and false) -- falsoprint(true and true) -- true
Puedes usar and para probar múltiples condiciones en estructuras de control como if declaraciones y while bucles .Por ejemplo, la siguiente declaración if - then prueba que dos condiciones son ambas verdaderas:
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
El operador binario or devuelve uno de los dos argumentos.Si el primer argumento se evalúa a true , entonces devuelve el primer argumento.De otra forma, devuelve el segundo argumento.
local y = x or 1print(y) -- 1 porque x no existe y, por lo tanto, es nulolocal d = falselocal e = d or 1print(e) -- 1 porque d es falsoprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- ciertoprint(false or false) -- falsoprint(true or false) -- ciertoprint(true or true) -- true
Puedes usar or para realizar pruebas lógicas complejas en estructuras de control.Por ejemplo, la siguiente declaración if - then prueba si dos condiciones son verdad o una tercera condición es verdad:
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
no
El operador unario not devuelve el valor booleano opuesto del argumento.Si el argumento es false o nil , entonces devuelve true .De lo contrario, devuelve false .
print(not true) -- falsoprint(not false) -- ciertoprint(not nil) -- ciertoprint(not "text") -- falsoprint(not 0) -- false
Puedes usar el operador not para activar un condicional o bucle si una variable es false o nil.
local nilVariable -- La variable se declara pero no tiene valor, por lo que es nulalocal falseVariable = false -- La variable se declara con valor de falseif not nilVariable thenprint(nilVariable) -- Produce "nulo" porque nulo no es verdaderoendif not falseVariable thenprint(falseVariable) -- Produce "falso" porque false no es verdaderoend
También puedes usar el operador not para probar lo opuesto a una declaración multicondicional completa.En el siguiente ejemplo de código, los if - then ‑ pruebas condicionales que no es cierto que tres sea mayor que cuatro ni es cierto que cinco sea mayor que cuatro.
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.
Relacional
Los operadores relacionales comparan dos parámetros y devuelven un : o .
Operador | Descripción | Ejemplo | Metamétodo asociado |
---|---|---|---|
== | Igual a | 3 == 5 → false | __eq |
~= | No igual a | 3 ~= 5 → true | |
> | Mayor que | 3 > 5 → false | |
< | Menos de | 3 < 5 → true | __lt |
>= | Mayor que o igual a | 3 >= 5 → false | |
<= | Menos de o igual a | 3 <= 5 → true | __le |
Árbitro
Luau admite los operadores binarios habituales junto con la exponenciación, el módulo y la negación unaria.
Operador | Descripción | Ejemplo | Metamétodo asociado |
---|---|---|---|
+ | Adición | 1 + 1 = 2 | __add |
- | Restitución | 1 - 1 = 0 | __sub |
* | Multiplicación | 5 * 5 = 25 | __mul |
/ | División | 10 / 5 = 2 | __div |
// | División de piso | 10 // 4 = 2``-10 // 4 = -3 | __idiv |
^ | Exponenciación | 2 ^ 4 = 16 | __pow |
% | Módulo | 13 % 7 = 6 | __mod |
- | Negación unaria | -2 = 0 - 2 | __unm |
Asignación compuesta
Puedes usar operadores de asignación compuestos para establecer una variable igual al resultado de una operación donde el primer parámetro es el valor actual de la variable.
La operación en una asignación compuesta ocurre una vez.Por ejemplo, si una expresión genera un índice aleatorio en una tabla, Luau usa el mismo índice para la operación y la asignación.
En los siguientes ejemplos, suponga local x = 3.
Operador | Operación | Ejemplo | Nuevo valor de x |
---|---|---|---|
+= | Adición | x += 2 | 5 |
-= | Restitución | x -= 2 | 1 |
*= | Multiplicación | x *= 2 | 6 |
/= | División | x /= 2 | 1.5 |
//= | División de piso | x //= 2 | 1 |
%= | Módulo | x %= 2 | 1 |
^= | Exponenciación | x ^= 2 | 9 |
..= | Concatenación | x ..= " World!" | "3 World!" |
Misceláneo
Los operadores misceláneos incluyen concatenación y longitud .
Operador | Descripción | Ejemplo | Metamétodo asociado |
---|---|---|---|
.. | Conecta dos cadenas | print("Hello " .. "World!") | __concat |
# | Longitud de la tabla | Si tableVar = {1, 2, 3} , entonces #tableVar == 3 . | __len |