Lua online - IDE, editor, compilador, intérprete

Ejecuta scripts de Lua 5.4 al instante con una compilación en WebAssembly del intérprete de referencia. Ideal para aprender Lua o probar scripts de juegos y de configuración.

Lua 5.4 (wasmoon) · Se ejecuta en tu navegador, así que tu código nunca llega a nuestros servidores.
main.luaLua
Salida

            
        
Ctrl/⌘ + Enter para ejecutar

Funciones del compilador de Lua online (IDE, editor & intérprete)

Escribe, ejecuta y prueba código Lua online y gratis. Esta página funciona como IDE, editor de código, compilador e intérprete de Lua online, todo en uno: escribe tu código, pulsa Ejecutar y verás el resultado al momento. Todo se ejecuta en tu navegador, sin nada que instalar ni cuentas que crear.

  • Ejecuta código al instante: Lua 5.4 (wasmoon), con resultados en menos de un segundo tras la primera carga.
  • Editor de código: resaltado de sintaxis, números de línea, emparejamiento de corchetes y cierre automático de corchetes.
  • Errores claros: los mensajes de error y las advertencias aparecen en el panel de salida, igual que en tu propio ordenador.
  • Pantalla completa: Ctrl/⌘ + Shift + F, tamaño de fuente ajustable, diseño en paralelo o apilado y paneles redimensionables.
  • Guardado automático: tu código se guarda en tu navegador; descárgalo como main.lua o cópialo con un clic.
  • Experimenta sin riesgo: un límite de tiempo y un botón Detener acaban con los bucles infinitos.
  • Privado: el entorno de ejecución de Lua funciona en tu dispositivo, así que tu código nunca se sube.
  • Modo oscuro y atajos de teclado: Ctrl/⌘ + Enter ejecuta el código.
  • Gratis: sin registro y sin límites de uso.

Aprende otros lenguajes de programación

Cómo usar el compilador de Lua online

  1. Escribe o pega un script de Lua en el editor. Restablecer ejemplo recupera el código inicial.
  2. Pulsa Ejecutar o usa Ctrl + Enter (⌘ + Enter en un Mac).
  3. Todo lo que pases a print() aparece en el panel Salida. Como en el intérprete estándar, varios argumentos se separan con tabuladores y nil se imprime como nil. Los errores de ejecución y de sintaxis se resaltan junto con el número de línea.
  4. Elige un límite de tiempo de 5, 15 o 60 segundos. Un script que tarda demasiado se detiene automáticamente, y Detener lo termina al instante.

El entorno de ejecución de Lua es pequeño, muy por debajo de 1 MB, así que la página está lista para ejecutar casi al instante. Usa Copiar o main.lua para guardar tu script.

Tu script se ejecuta en un Web Worker dentro de tu navegador. Nunca se sube y no se almacena en nuestros servidores. El editor recuerda tu último código en el almacenamiento local de tu navegador y en ningún otro lugar.

Qué admite

El compilador ejecuta Lua 5.4 mediante wasmoon, una compilación a WebAssembly del intérprete de referencia de Lua escrito en C. Tu código lo ejecuta Lua de verdad, no una traducción a JavaScript.

  • El lenguaje Lua 5.4: subtipos entero y flotante, división entera (//), operadores bit a bit, goto y los atributos locales <const> y <close>.
  • Bibliotecas estándar: string (incluidos los patrones de Lua y string.format), table, math, utf8 y coroutine.
  • Closures, metatablas y corrutinas, para que puedas practicar Lua orientado a objetos y al estilo de generadores.

Limitaciones:

  • Usa print() para la salida. La salida se captura de print, así que úsalo en lugar de io.write.
  • Sin entrada estándar, acceso a la red ni archivos reales. Pon tus datos de prueba directamente en el script.
  • Sin módulos en C ni LuaRocks. Solo se puede ejecutar código Lua puro escrito en el editor.
  • Cada ejecución recibe un estado de Lua nuevo, así que las variables globales de la ejecución anterior se borran.

Referencia rápida de Lua

local Account = {}
Account.__index = Account

function Account.new(owner, balance)
  return setmetatable({ owner = owner, balance = balance or 0 }, Account)
end

function Account:deposit(v)
  self.balance = self.balance + v
end

local acc = Account.new("Ada")
acc:deposit(50)
print(acc.owner, acc.balance)          --> Ada  50

for word in ("one two three"):gmatch("%a+") do
  print(#word, word:upper())
end
print(7 // 2, 7 / 2)                   --> 3  3.5
TareaSintaxis
Variable locallocal x = 10
Concatenar cadenas"a" .. "b"
Longitud de una cadena o lista#t
Distinto dea ~= b
Bucle numéricofor i = 1, 10, 2 do ... end
Recorrer una lista / una tablafor i, v in ipairs(t) / for k, v in pairs(t)
Dar formato a un númerostring.format("%.2f", n)

Consejos

  • Los arrays de Lua empiezan en el índice 1, no en 0, y # solo es fiable para secuencias sin huecos de nil.
  • Declara las variables con local. Sin ello, una variable es global, lo que es más lento y una fuente habitual de errores.
  • Solo nil y false son falsos. 0 y la cadena vacía son verdaderos en Lua.
  • Los patrones de Lua se parecen a las expresiones regulares pero son más simples, y usan % en lugar de una barra invertida, como en %d+. Para expresiones regulares completas en otros lenguajes, prueba el Probador de Regex.
Consejo: Para imprimir el contenido de una tabla, recórrela con pairs, o usa table.concat(list, ", ") para una lista de cadenas y números. Pasar la propia tabla a print(t) no muestra su contenido.

Preguntas frecuentes

¿Qué versión de Lua usa?

Lua 5.4. Ejecuta print(_VERSION) para confirmarlo. El código escrito para Lua 5.3 casi siempre funciona sin cambios, mientras que el de Lua 5.1 o LuaJIT puede necesitar pequeños ajustes, por ejemplo sustituir unpack por table.unpack.

¿Puedo probar aquí scripts de Roblox o LÖVE?

Puedes probar la lógica de Lua puro, como funciones, tablas, manejo de cadenas y matemáticas. Las API de los motores, como los servicios de Roblox (Roblox usa su propio dialecto, Luau) o las funciones love.* de LÖVE, no existen aquí.

¿Por qué no funciona io.read?

El compilador no tiene entrada estándar interactiva. Define tus valores de prueba como variables al principio del script.

¿Qué otros lenguajes puedo ejecutar online?

El Compilador de Python online y el Compilador de Ruby online también se ejecutan por completo en tu navegador.

Actualizado

Copiado al portapapeles