Documentación de Celestia

 
  4. CELX SCRIPTS  
  4.4. Operadores  
 

En LUA, al igual que en la mayoría de los lenguajes de programación, se pueden distinguir tres tipos de operadores que se pueden utilizar como parte de sus sentencias:

  • Operadores aritméticos: Se utilizan sobre números o cadenas de texto que pueden convertirse en número. Los operadores binarios (empleados sobre dos elementos) son suma (+), resta (-), multiplicación (*), división (/), módulo (%) y exponenciación (^), siendo el resultado de la operación módulo el resto de dividir el primer número entre el segundo número (por ejemplo, el resultado de 17 % 10 es 7). El único operador unario (empleado sobre un único elemento) es la negación (-), que convierte números positivos en negativos y viceversa.
  • Operadores relacionales: Estos operadores sirven para realizar comparaciones entre dos elementos y siempre tienen como resultado un valor de tipo booleano (true o false). Suelen emplearse en las condiciones de las estructuras de control que se explican posteriormente. Los operadores de este tipo existentes en LUA son iguales (==),distintos (~=), menor (<), mayor (>), menor o igual (<=) y mayor o igual (>=). Los dos primeros operadores se pueden emplear con cualquiera de los tipos de LUA, mientras que los siguientes se suelen usar sólo para números.
  • Operadores lógicos: Esta clase de operadores se utiliza para combinar valores booleanos. En LUA existen los operadores lógicos not (opera sobre un único elemento y devuelve el booleano opuesto al actual), and (opera sobre dos elementos y devuelve true sólo si ambos elementos son true, en caso contrario devuelve false) y or (opera sobre dos elementos y devuelve false sólo si ambos elementos son false, en caso contrario devuelve true).

Existen además un par de operadores especiales en LUA que se utilizan para concatenar cadenas de texto y para obtener la longitud de las mismas. El operador de concatenación (..) se aplica sobre dos cadenas de texto (también pueden ser números que serán convertidos automáticamente en cadenas de texto) y obtiene como resultado la adición de la segunda cadena de texto a la primera. Por ejemplo, si se tiene el siguiente código:

a = “saca”

b = “corchos”

c = a .. b

La variable c sería equivalente a la cadena “sacacorchos” al final del bloque, ya que se unirían las cadenas de texto que contienen las variables a y b.

El operador de longitud (#) se utiliza para obtener un número igual al número de caracteres que componen la cadena sobre la que opera. Por ejemplo, al aplicar el operador sobre la variable c del ejemplo anterior se obtendría un resultado igual a 10.

En LUA, al igual que en cualquier otro lenguaje de programación, se define unas normas de precedencia entre los operadores anteriormente descritos para el caso de que se empleen varios de ellos de manera conjunta, de forma que se operará con el operador de mayor prioridad antes de aplicar el de menor prioridad. El orden de prioridad, de menor a mayor, estando en la misma línea los de igual prioridad, es el siguiente:

  • or
  • and
  • <, >, <=, >=, ==, ~=
  • ..
  • +, - (binario)
  • *, /, %
  • not, #, -(unario)
  • ^

De cualquier forma la precedencia de estos operadores se puede modificar escribiendo las operaciones a las que se les quiere dar mayor prioridad entre paréntesis.

 
 
Índice general