Operadores Lua
Un operador es un símbolo especial que le indica al intérprete que ejecute operaciones matemáticas o lógicas específicas. Lua proporciona los siguientes tipos de operadores:
- Operadores aritméticos
- Operadores relacionales
- Operadores lógicos
- Otros operadores
Operadores aritméticos
La siguiente tabla enumera los operadores aritméticos comunes en el lenguaje Lua, con A = 10 y B = 20:
| Operador | Descripción | Ejemplo |
|---|---|---|
| + | Suma | A + B da como resultado 30 |
| - | Resta | A - B da como resultado -10 |
| * | Multiplicación | A * B da como resultado 200 |
| / | División | B / A da como resultado 2 |
| % | Módulo | B % A da como resultado 0 |
| ^ | Exponenciación | A^2 da como resultado 100 |
| - | Signo negativo | -A da como resultado -10 |
| // | Operador de división entera (>=lua5.3) | 5//2Da como resultado 2 |
Ejemplo
Podemos entender más a fondo la aplicación de los operadores aritméticos mediante el siguiente ejemplo:
Ejemplo
b = 10
c = a + b
print("Line 1 - el valor de c es ", c )
c = a - b
print("Line 2 - el valor de c es ", c )
c = a * b
print("Line 3 - el valor de c es ", c )
c = a / b
print("Line 4 - el valor de c es ", c )
c = a % b
print("Line 5 - el valor de c es ", c )
c = a^2
print("Line 6 - el valor de c es ", c )
c = -a
print("Line 7 - el valor de c es ", c )
El resultado de ejecutar el programa anterior es:
Line 1 - c 的值为 31 Line 2 - c 的值为 11 Line 3 - c 的值为 210 Line 4 - c 的值为 2.1 Line 5 - c 的值为 1 Line 6 - c 的值为 441 Line 7 - c 的值为 -21
En Lua,// se usa como operador de división, y el resultado incluye la parte decimal;//// se usa como operador de división entera, y el resultado no incluye la parte decimal:
Ejemplo
b = 2
print("División - el valor de a/b es ", a / b )
print("División entera - el valor de a//b es ", a // b )
El resultado de ejecutar el programa anterior es:
除法运算 - a/b 的值为 2.5 整除运算 - a//b 的值为 2
Operadores relacionales
La siguiente tabla enumera los operadores relacionales comunes en el lenguaje Lua, con A = 10 y B = 20:
| Operador | Descripción | Ejemplo |
|---|---|---|
| == | Igual que: comprueba si dos valores son iguales; si son iguales devuelve true, de lo contrario devuelve false | (A == B) es false. |
| ~= | Distinto de: comprueba si dos valores son iguales; si no son iguales devuelve true, de lo contrario devuelve false | (A ~= B) es true. |
| > | Mayor que: si el valor de la izquierda es mayor que el de la derecha, devuelve true; de lo contrario, false | (A > B) es false. |
| < | Menor que: si el valor de la izquierda es mayor que el de la derecha, devuelve false; de lo contrario, true | (A < B) es true. |
| >= | Mayor o igual que: si el valor de la izquierda es mayor o igual que el de la derecha, devuelve true; de lo contrario, false | (A >= B) devuelve false. |
| <= | Menor o igual que: si el valor de la izquierda es menor o igual que el de la derecha, devuelve true; de lo contrario, false | (A <= B) devuelve true. |
Ejemplo
Podemos entender más a fondo la aplicación de los operadores relacionales mediante el siguiente ejemplo:
Ejemplo
b = 10
if( a == b )
then
print("Line 1 - a es igual a b" )
else
print("Line 1 - a no es igual a b" )
end
if( a ~= b )
then
print("Line 2 - a no es igual a b" )
else
print("Line 2 - a es igual a b" )
end
if ( a < b )
then
print("Line 3 - a es menor que b" )
else
print("Line 3 - a es mayor o igual que b" )
end
if ( a > b )
then
print("Line 4 - a es mayor que b" )
else
print("Line 5 - a es menor o igual que b" )
end
-- Modificar los valores de a y b
a = 5
b = 20
if ( a <= b )
then
print("Line 5 - a es menor o igual que b" )
end
if ( b >= a )
then
print("Line 6 - b es mayor o igual que a" )
end
El resultado de ejecutar el programa anterior es:
Line 1 - a 不等于 b Line 2 - a 不等于 b Line 3 - a 大于等于 b Line 4 - a 大于 b Line 5 - a 小于等于 b Line 6 - b 大于等于 a
Operadores lógicos
La siguiente tabla enumera los operadores lógicos comunes en el lenguaje Lua, con A = true y B = false:
| Operador | Descripción | Ejemplo |
|---|---|---|
| and | Operador Y lógico (and). Si A es false, devuelve A; de lo contrario, devuelve B. | (A and B) es false. |
| or | Operador O lógico (or). Si A es true, devuelve A; de lo contrario, devuelve B. | (A or B) es true. |
| not | Operador NO lógico (not). Invierte el resultado de la operación lógica; si la condición es true, el NO lógico es false. | not(A and B) es true. |
Ejemplo
Podemos entender más a fondo la aplicación de los operadores lógicos mediante el siguiente ejemplo:
Ejemplo
b = true
if ( a and b )
then
print("a and b - la condición es true" )
end
if ( a or b )
then
print("a or b - la condición es true" )
end
print("---------Línea divisoria---------" )
-- Modificar los valores de a y b
a = false
b = true
if ( a and b )
then
print("a and b - la condición es true" )
else
print("a and b - la condición es false" )
end
if ( not( a and b) )
then
print("not( a and b) - la condición es true" )
else
print("not( a and b) - la condición es false" )
end
El resultado de ejecutar el programa anterior es:
a and b - 条件为 true a or b - 条件为 true ---------分割线--------- a and b - 条件为 false not( a and b) - 条件为 true
Otros operadores
La siguiente tabla enumera los operadores de concatenación y los operadores para calcular la longitud de tablas o cadenas en Lua:
| Operador | Descripción | Ejemplo |
|---|---|---|
| .. | Concatena dos cadenas | a..b, donde a es "Hello " y b es "World", da como resultado "Hello World". |
| # | Operador unario que devuelve la longitud de una cadena o tabla. | #"Hello" devuelve 5 |
Ejemplo
Podemos entender más a fondo la aplicación de los operadores de concatenación y de longitud mediante el siguiente ejemplo:
Ejemplo
b = "World"
print("Concatenar las cadenas a y b ", a..b )
print("Longitud de la cadena b ",#b )
print("Longitud de la cadena Test ",#"Test" )
print("Longitud de la URL de Ejemplo ",#"www.example.com" )
El resultado de ejecutar el programa anterior es:
连接字符串 a 和 b Hello World b 字符串长度 5 字符串 Test 长度 4 Ejemplo网址长度 14
Precedencia de operadores
En orden de mayor a menor precedencia:
^ not - (unary) * / % + - .. < > <= >= ~= == and or
Excepto ^^y..todos los demás operadores binarios son asociativos por la izquierda.
a+i < b/2+1 <--> (a+i) < ((b/2)+1) 5+x^2*8 <--> 5+((x^2)*8) a < y and y <= z <--> (a < y) and (y <= z) -x^2 <--> -(x^2) x^y^z <--> x^(y^z)
Ejemplo
Podemos entender más a fondo la precedencia de los operadores en Lua mediante el siguiente ejemplo:
Ejemplo
b = 10
c = 15
d = 5
e = (a + b) * c / d;-- ( 30 * 15 ) / 5
print("(a + b) * c / d el valor de la operación es:",e )
e = ((a + b) * c) / d; -- (30 * 15 ) / 5
print("((a + b) * c) / d el valor de la operación es:",e )
e = (a + b) * (c / d);-- (30) * (15/5)
print("(a + b) * (c / d) el valor de la operación es:",e )
e = a + (b * c) / d; -- 20 + (150/5)
print("a + (b * c) / d el valor de la operación es:",e )
El resultado de ejecutar el programa anterior es:
(a + b) * c / d 运算值为 : 90.0 ((a + b) * c) / d 运算值为 : 90.0 (a + b) * (c / d) 运算值为 : 90.0 a + (b * c) / d 运算值为 : 50.0Otras extensiones