Lua - Tipos de datos

Lua es un lenguaje escrito dinámicamente, por lo que las variables no tienen tipos, solo los valores tienen tipos. Los valores pueden almacenarse en variables, pasarse como parámetros y devolverse como resultados.

En Lua, aunque no tenemos tipos de datos variables, tenemos tipos para los valores. La lista de tipos de datos para valores se proporciona a continuación.

No Señor Tipo de valor y descripción
1

nil

Se utiliza para diferenciar el valor de tener algunos datos o no tener datos (nulos).

2

boolean

Incluye verdadero y falso como valores. Generalmente se utiliza para comprobar el estado.

3

number

Representa números reales (punto flotante de doble precisión).

4

string

Representa una matriz de caracteres.

5

function

Representa un método que está escrito en C o Lua.

6

userdata

Representa datos C arbitrarios.

7

thread

Representa hilos de ejecución independientes y se utiliza para implementar corrutinas.

8

table

Representa matrices ordinarias, tablas de símbolos, conjuntos, registros, gráficos, árboles, etc., e implementa matrices asociativas. Puede contener cualquier valor (excepto nulo).

Función de tipo

En Lua, existe una función llamada 'tipo' que nos permite conocer el tipo de variable. En el siguiente código se dan algunos ejemplos.

print(type("What is my type"))   --> string
t = 10

print(type(5.8*t))               --> number
print(type(true))                --> boolean
print(type(print))               --> function
print(type(nil))                 --> nil
print(type(type(ABC)))           --> string

Cuando compila y ejecuta el programa anterior, produce el siguiente resultado en Linux:

string
number
boolean
function
nil
string

De forma predeterminada, todas las variables apuntarán a cero hasta que se les asigne un valor o se inicialicen. En Lua, las cadenas de cero y vacías se consideran verdaderas en caso de verificaciones de condición. Por lo tanto, debe tener cuidado al usar operaciones booleanas. Sabremos más sobre el uso de estos tipos en los próximos capítulos.