Cuando empiezas a trabajar con Lua, una de las primeras preguntas es: ¿cómo se organizan las variables y los tipos? Especialmente si ya has escrito en Python o JavaScript, donde todo parece ser también «dinámico», pero hay matices. Vamos a verlo.
Variables predeterminadas en Lua globalesEsto distingue mucho el lenguaje de Python y JavaScript, donde todo lo que creas dentro de una función es local.
x = 10 -- глобальная переменная
local y = 5 -- локальная переменная
👉 Es una buena práctica utilizar siempre local para no saturar el espacio de nombres global y no detectar errores inesperados.

Tipos en Lua: 8 básicos
nil
boolean
number
string
function
userdata
thread
table
local a = 42 -- number
local b = "hello" -- string
local c = true -- boolean
local d = nil -- nil
📌 A diferencia de Python, donde los números se dividen en int, float, complex, en Lua todo es simplemente number. Simplifica la vida, pero a veces reduce el control.
Tipificación dinámica: ¿cómo en JS y Python?
Sí, Lua, como Python/JavaScript, es un lenguaje con tipificación dinámica. La variable puede cambiar de tipo sobre la marcha:
local v = 10
print(type(v)) -- number
v = "line"
print(type(v)) -- string
# Python
x = 10
x = "line"
// JavaScript
let x = 10
x = "line"
Pero hay un detalle: Lua no tiene mecanismos integrados para restringir el tipo (a diferencia de TypeScript, mypy, etc.). Todo depende de la disciplina del programador.

Tablas: tipo universal principal
Si Python tiene listas, diccionarios, conjuntos, y en JS — objetos y matrices, entonces en Lua todo esto se combina en un solo tipo: table.
local arr = {1, 2, 3} -- как массив
local dict = {x=10, y=20} -- как словарь
👉 Ahí radica el poder de Lua: menos tipos, más flexibilidad. Pero también más responsabilidad 😅.
¿En qué se diferencia Lua de Python y JS?
Características | Lua | Python | JavaScript |
|---|---|---|---|
Variables predeterminadas | Globales | Locales en función | Funciones locales (let/const) |
Número de tipos integrados | 8 | 14+ | 7+ |
Tipo de números | Uno (number) | int, float, complex | number, bigint |
Estructura principal de datos | table | list, dict, set, tuple | object, array |
Sistema de tipos | Dinámica, sin límites | Dinámica pero estricta | Dinámica, con «magia» (NaN, etc.) |
Lua es un lenguaje con un modelo de datos simple y flexible. No está sobrecargado con tipos como Python, y no es tan «raro» con los números como JavaScript. Pero debido a las variables globales y la falta de una tipificación estricta, se debe tener especial cuidado.
📌 Por lo tanto, si quieres escribir en Lua sin dolor, siempre pon local y controla claramente lo que se almacena en las variables.
En Codice hacemos que el aprendizaje de la programación sea emocionante y comprensible: tenemos cursos interesantes con tareas que ayudan a mejorar las habilidades paso a paso.
Y también tenemos un canal de telegram, donde discutimos ideas geniales, compartimos experiencias y analizamos juntos las tareas: aprender no solo es útil, sino también divertido.
