Gracias por los comentarios

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

Expresiones

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

  • 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 utiliza un valor de cadena en una operación aritmética, se convierte en un número; si esto falla, se devuelve un error.

   
a + b agregar a y b
a: B restar b de a
a * b multiplicar a y b
a/b dividir a por b
% b modulo = a: Math.floor (a/b) *b
a ^ b elevar a la potencia b; b puede ser cualquier número
-a negar a

Operaciones relacionales

Las operaciones relacionales comparan dos valores y devuelven verdadero si la relación está satisfecha y falso si no lo es. Las operaciones relacionales se pueden realizar entre valores de cualquier tipo. Si los valores no son del mismo tipo, se devuelve false. Los números se comparan de la manera habitual. Las cadenas se comparan mediante la secuencia de intercalación para 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 que 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 cualesquiera. nil y false se consideran false y cualquier otro valor se considera true. Las operaciones lógicas utilizan la evaluación de atajo, donde 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 un otro retorno b
a o b si a no es falso y no nulo, devuelve un retorno b
no es un si a no es falso o nulo devuelve falso else devuelve verdadero

Las operaciones e y o se pueden utilizar 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 se inicializa (nil). Esto es útil para los parámetros opcionales en las funciones.
a y b o c se puede usar para elegir no nil b o c en función de la condición a. Si a es verdadero, entonces a y b devuelve b, y b o c devuelve b. Si a es falso, entonces a y b devuelve false y false o c devuelve c. Esto es equivalente 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 construye una cadena de n bytes concatenando un byte a la vez, esto copiará n* (n+1) /2 bytes. Para un mejor rendimiento, puede poner piezas de una cadena para concatenar en una tabla (discutido más adelante) y luego usar la función table.concat (). Un ejemplo de esto se muestra en el ejemplo COMBINE_HEADERS ().

Duración

La longitud de una cadena s es devuelta por #s. El operador # también se utiliza con tablas de matriz, como se discute más adelante.

Precedencia

La precedencia del operador determina el orden en el que se realizan las operaciones en una expresión, con operaciones de mayor precedencia realizadas antes que aquellas con menor precedencia. El orden de precedencia puede, como de costumbre, ser anulado por 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)
-
  • / %
- ..
- = ~= < > <= >=
- y
más bajo O bien

Las operaciones con la misma precedencia 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