Gracias por los comentarios

Este artículo ha sido traducido automáticamente. (Aviso legal)

Expresiones

Las expresiones calculan valores a partir de valores literales y variables.

  • Operaciones aritméticas
  • Operaciones relacionales
  • Operaciones lógicas
  • Concatenación
  • Duración
  • Precedencia

Operaciones aritméticas

Las operaciones aritméticas se realizan en valores numéricos. Si se usa un valor de cadena en una operación aritmética, se convierte en un número; si eso falla, se devuelve un error.

   
a+ b sumar a y b
a - b restar b de a
a*b multiplicar a y b
a/ b dividir a por b
a% b módulo = a - math.floor (a/b) *b
a^b eleva a a la potencia b; b puede ser cualquier número
-a negar un

Operaciones relacionales

Las operaciones relacionales comparan dos valores y devuelven verdadero si la relación se cumple y falso si no lo está. Se pueden realizar operaciones relacionales entre valores de cualquier tipo. Si los valores no son del mismo tipo, se devuelve false. Los números se comparan de la forma habitual. Las cadenas se comparan utilizando la secuencia de clasificación de la configuración regional actual.

   
a == b a es igual a b
a ~= b a no es igual a b
a < b a es menor que b
a > b a es mayor que b
a <= b a es menor o igual a b
a >= b a es mayor o igual que b

Operaciones lógicas

Las operaciones lógicas se realizan tradicionalmente en valores booleanos, pero en este lenguaje se pueden realizar en dos valores cuales. nil y false se consideran falsos y cualquier otro valor se considera verdadero. Las operaciones lógicas utilizan la evaluación abreviada, en la que si el primer valor determina el resultado de la operación, el segundo valor no se evalúa.

   
a y b si a es falso o nulo, devuelve a; de lo contrario, devuelve b
a o b si a no es falso ni nulo, devuelve a; de lo contrario, devuelve b
no un si a no es falso o nulo devuelve falso; de lo contrario, devuelve verdadero

Las operaciones y y o se pueden usar para la evaluación condicional dentro de una expresión:

   
a o b se puede usar para proporcionar un valor predeterminado b si a no está inicializado (nil). Esto resulta útil para los parámetros opcionales de las funciones.
a y b o c se puede usar para elegir un b o c no nulo en función de la condición a. Si a es verdadero, a y b devuelven b, y b o c devuelve b. Si a es falso, a y b devuelven falso y falso o c devuelve c. Esto equivale a un? b: c en el lenguaje de programación C.

Concatenación

La concatenación de cadenas es s1.. s2. Esto crea una nueva cadena lo suficientemente grande como para contener el contenido de s1 y s2 y copia el contenido en la nueva cadena. Se produce un error si s1 o s2 no son cadenas. Tenga en cuenta que la concatenación repetida puede tener una sobrecarga de copia considerable. Si crea una cadena de n bytes concatenando un byte a la vez, esto copiará n* (n+1) /2 bytes. Para un mejor rendimiento, puede colocar fragmentos de una cadena para concatenarlos en una tabla (se explica más adelante) y, a continuación, utilizar la función table.concat (). Un ejemplo de esto se muestra en el ejemplo COMBINE_HEADERS ().

Duración

#s devuelve la longitud de una cadena s. El operador # también se usa con tablas de matrices, como se explica más adelante.

Precedencia

La prioridad de los operadores determina el orden en el que se realizan las operaciones en una expresión; las operaciones de mayor prioridad se realizan antes que las de menor prioridad. Como de costumbre, el orden de precedencia se puede anular con paréntesis. Por ejemplo, en a + b \* c, * tiene mayor prioridad que +, por lo que la expresión se evalúa como a + (b \* c).

   
más alto
- no # - (unario)
-
  • / %
- ..
- = ~= < > <= >=
- and
más bajo O bien

Las operaciones con la misma prioridad se realizan de izquierda a derecha (asociativo de izquierda), excepto ^ y.. que se realizan de derecha a izquierda (asociativo de derecha). Entonces a^b^c se evalúa como a^ (b^c).

La versión oficial de este contenido está en inglés. Para mayor comodidad, parte del contenido de la documentación de Cloud Software Group solo tiene traducción automática. Cloud Software Group no puede controlar el contenido con traducción automática, que puede contener errores, imprecisiones o un lenguaje inadecuado. No se ofrece ninguna garantía, ni implícita ni explícita, en cuanto a la exactitud, la fiabilidad, la idoneidad o la precisión de las traducciones realizadas del original en inglés a cualquier otro idioma, o que su producto o servicio de Cloud Software Group se ajusten a cualquier contenido con traducción automática, y cualquier garantía provista bajo el contrato de licencia del usuario final o las condiciones de servicio, o cualquier otro contrato con Cloud Software Group, de que el producto o el servicio se ajusten a la documentación no se aplicará en cuanto dicha documentación se ha traducido automáticamente. Cloud Software Group no se hace responsable de los daños o los problemas que puedan surgir del uso del contenido traducido automáticamente.
Expresiones