Un operador **** es un símbolo para realizar una operación o 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 que tanto el cero como la cadena vacía son true. La siguiente tabla resume cómo se comportan los operadores lógicos en condicionales.
Operador | Descripciones |
---|---|
y | Valora como true solo si ambas condiciones son verdaderas |
o | Valora como true si cualquiera de las condiciones es verdadera |
no | Evalúa como lo contrario de la condición |
y
El operador binario and devuelve uno de los dos argumentos. Si el primer argumento se evalúa como true, entonces devuelve el segundo argumento. De lo contrario, devuelve el primer argumento.
print(4 and 5) -- 5 vecesprint(nil and 12) -- ceroprint(false and 12) -- falsoprint(false and true) -- falsoprint(false and false) -- falsoprint(true and false) -- falsoprint(true and true) -- true
Puede usar and para probar múltiples condiciones en estructuras de control como if declaraciones y while bucles. Por ejemplo, la siguiente if``then prueba que ambas condiciones son 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
o
El operador binario or devuelve uno de los dos argumentos. Si el primer argumento se evalúa como true, entonces devuelve el primer argumento. De lo contrario, 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) -- 4 vecesprint(nil or 12) -- 12 añosprint(false or 12) -- 12 añosprint(false or true) -- verdadprint(false or false) -- falsoprint(true or false) -- verdadprint(true or true) -- true
Puede usar or para realizar pruebas lógicas complejas en estructuras de control. Por ejemplo, la siguiente if``then prueba si dos condiciones son verdaderas o una tercera condición es verdadera:
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 al argumento. Si el argumento es false o nil, entonces devuelve true. De lo contrario, devuelve false.
print(not true) -- falsoprint(not false) -- verdadprint(not nil) -- verdadprint(not "text") -- falsoprint(not 0) -- false
Puede usar el operador not para activar un condicional o un bucle si una variable es false o nil.
local nilVariable -- La variable está declarada pero no tiene valor, por lo que es nulalocal falseVariable = false -- La variable se declara con el valor de falsoif not nilVariable thenprint(nilVariable) -- Produce "nil" porque nil no es verdadendif not falseVariable thenprint(falseVariable) -- Produce "false" porque false no es trueend
También puede usar el operador not para probar lo contrario de una sentencia de múltiples condiciones completa. En la siguiente muestra de código, el if``then prueba condicionalmente que no es cierto que tres sea mayor que cuatro ni 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 boolean: true o false.
Operador | Descripción | Ejemplo | Metamétodo asociado |
---|---|---|---|
== | Igual a | 3 == 5 → falso | __eq |
~= | No es igual a | 3 ~ = 5 → verdad | |
> | Mayor que | 3 > 5 → falso | |
< | Menos de | 3 < 5 → verdad | __lt |
>= | Mayor que o igual a | 3 >= 5 → falso | |
<= | Menor o igual a | 3 <= 5 → verdad | __le |
Aritmética
Lua 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 | __ añadir |
- | Subtracción | 1 - 1 = 0 | __sub |
* | Multiplicación | 5 * 5 = 25 | __mul |
/ | División | 10/5 = 2 | __div |
// | División de Suelo | 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 de compuesto
Puede usar operadores de asignación compuesta 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 tanto para la operación como para la asignación.
En los siguientes ejemplos, suponga local x = 3 .
Operador | Operación | Ejemplo | Nuevo valor de x |
---|---|---|---|
+= | Adición | x += 2 | 5 |
-= | Subtracción | x -= 2 | 1 |
*= | Multiplicación | x *= 2 | 6 |
/= | División | x /= 2 | 1.5 |
//= | División de Suelo | x //= 2 | 1 |
%= | Módulo | x %= 2 | 1 |
^ = | Exponenciación | x ^ = 2 | 9 |
..= | Concatenación | x ..= "¡Mundo!" | "¡3 Mundo!" |
Misceláneo
Los operadores varios incluyen concatenación y longitud .
Operador | Descripción | Ejemplo | Metamétodo asociado |
---|---|---|---|
.. | Conecta dos cuerdas | print ("Hola " .. "¡Mundo!") | __concat |
# | Longitud de la mesa | Si tableVar = , entonces #tableVar == 3 . | __len |