En Lua, los tipos de datos son dinámicos, lo que significa que las variables no necesitan una declaración de tipo explícita; su tipo es determinado en tiempo de ejecución según el valor que almacenan. Lua tiene un conjunto reducido de tipos de datos básicos, pero su flexibilidad proviene principalmente del tipo tabla.
Lua soporta los siguientes tipos de datos básicos:
true
o false
.
No es necesario especificar el tipo al declarar una variable, ya que Lua determina el tipo en función del valor asignado.
local numero = 42 -- number
local texto = "Hola Lua" -- string
local verdadero = true -- boolean
local nada = nil -- nil
El tipo nil
indica la ausencia de valor. Por defecto, las variables no inicializadas en Lua tienen el valor nil
.
local variable
print(variable) -- nil
Además, puedes asignar explícitamente nil
para eliminar el valor de una variable.
variable = 42
variable = nil -- Se elimina el valor
Lua utiliza el tipo boolean
para representar valores lógicos, que pueden ser true
o false
.
local esVerdadero = true
local esFalso = false
En Lua, cualquier valor es considerado verdadero excepto false
y nil
.
if 0 then
print("Cualquier valor es verdadero, excepto false y nil")
end
El tipo number
en Lua puede representar tanto enteros como números de punto flotante.
local entero = 10
local flotante = 3.14
Lua utiliza de manera predeterminada números de doble precisión (flotantes) para representar todos los números, lo que permite manejar tanto enteros como decimales sin distinción.
Las cadenas de texto en Lua se representan con el tipo string
. Se pueden definir usando comillas simples o dobles.
local saludo = "Hola, Mundo"
local despedida = 'Adiós, Mundo'
Lua también permite concatenar cadenas utilizando el operador ..
.
local completo = saludo .. " " .. despedida
print(completo) -- Hola, Mundo Adiós, Mundo
El tipo table es uno de los más poderosos en Lua, ya que es una estructura de datos general que puede funcionar como array, diccionario, lista, conjunto, etc.
local frutas = {"manzana", "banana", "cereza"}
print(frutas[1]) -- manzana
local persona = {
nombre = "Juan",
edad = 30
}
print(persona["nombre"]) -- Juan
Las tablas en Lua son dinámicas y pueden crecer o cambiar en tiempo de ejecución.
En Lua, las funciones son de primera clase, lo que significa que pueden almacenarse en variables, pasarse como argumentos y retornarse desde otras funciones.
local function saludar()
print("Hola")
end
saludar() -- Ejecuta la función
También puedes asignar funciones a variables o tablas.
local sumar = function(a, b)
return a + b
end
print(sumar(5, 3)) -- 8
Para verificar el tipo de una variable en Lua, se usa la función type()
.
local numero = 42
print(type(numero)) -- number
local variables = {42, "Texto", true, nil, {1, 2, 3}, function() return "función" end}
for i, v in ipairs(variables) do
print(type(v))
end
Salida:
number
string
boolean
nil
table
function
Aunque Lua tiene un conjunto básico de tipos, puedes crear tipos personalizados utilizando metatables. Esto te permite agregar comportamientos especiales a las tablas, como sobrecargar operadores o definir comportamiento específico para ciertas operaciones.
local miTabla = {}
local mt = {
__index = function(t, k)
return "No existe el campo " .. k
end
}
setmetatable(miTabla, mt)
print(miTabla.campoInexistente) -- No existe el campo campoInexistente
En Lua, los tipos de datos son flexibles y se manejan dinámicamente. Desde los básicos como number
, string
, y boolean
, hasta las poderosas tablas, que permiten crear estructuras complejas. Además, puedes determinar el tipo de una variable en cualquier momento utilizando la función type()
, y si es necesario, extender la funcionalidad de los tipos nativos usando metatables.
Para más información, consulta la documentación oficial de Lua.
Jorge García
Fullstack developer