Menu
Coddy logo textTech

Hoja de Trucos de Lua

Última actualización

Hola Mundo y ejecutar código

Lua es minimalista: una sola sentencia se ejecuta.

OperaciónSintaxis
Imprimir una líneaprint("Hello, World!")
Imprimir varios valoresprint("x", 1, true)
Escribir sin salto de líneaio.write("Hi")
Comentario-- this is a comment
Comentario de varias líneas--[[ ... ]]
Concatenar cadenasprint("Hi " .. name)
Ejecutar un archivolua app.lua
Shell interactivalua

Variables y tipos

Las variables son globales por defecto; declara las locales con local.

OperaciónSintaxis
Variable locallocal age = 30
Variable globalcount = 0
Asignación múltiplelocal a, b = 1, 2
Los ocho tiposnil, boolean, number, string, table, function, userdata, thread
Nil / booleanosnil, true, false
Comprobar el tipotype(x) devuelve "number"
Convertir a númerotonumber("42")
Convertir a cadenatostring(42)

Cadenas

Las cadenas son inmutables; funcionan tanto las comillas simples como las dobles.

OperaciónSintaxis
Longitud#s o string.len(s)
Concatenars1 .. s2
Mayúsculas / minúsculass:upper(), s:lower()
Subcadenas:sub(1, 3)
Buscar una subcadenas:find("ell")
Reemplazar (gsub)s:gsub("a", "b")
Formatostring.format("%05d", 42)
Cadena larga[[ multi\nline ]]

Tablas (la estructura de datos central)

Las tablas son el único tipo estructurado de Lua: funcionan como arrays, mapas y objetos.

OperaciónSintaxis
Tabla vacíalocal t = {}
Estilo array (base 1)local t = {10, 20, 30}
Acceder a un elemento del arrayt[1] (primer elemento)
Tabla estilo mapalocal u = {name = "Ada", age = 30}
Acceder a un valor del mapau.name o u["name"]
Establecer un valort[4] = 40, u.email = "a@x.com"
Longitud de la parte de array#t
Iterar el array (ipairs)for i, v in ipairs(t) do ... end
Iterar todas las claves (pairs)for k, v in pairs(u) do ... end
Tabla anidadalocal m = {a = {1, 2}}

Control de flujo

Los bloques se cierran con end; solo nil y false son falsy.

OperaciónSintaxis
If / elseif / elseif x > 0 then ... elseif x < 0 then ... else ... end
Operadores lógicosand, or, not
For numéricofor i = 1, 10 do ... end
For con pasofor i = 10, 1, -1 do ... end
Bucle whilewhile x < 100 do ... end
Repeat-untilrepeat ... until done
Breakbreak
Operador de desigualdadif a ~= b then ... end

Funciones

Las funciones son valores de primera clase y pueden devolver varios resultados.

OperaciónSintaxis
Definir una funciónfunction add(a, b) return a + b end
Función locallocal function square(x) return x * x end
Función anónimalocal f = function(x) return x * 2 end
Varios valores de retornofunction bounds() return 1, 10 end
Capturar varios retornoslocal lo, hi = bounds()
Función variádicafunction sum(...) ... end
Recolectar varargslocal args = {...}
Método (sintaxis de dos puntos)function obj:greet() ... end

Biblioteca string

Funciones comunes de la biblioteca string (invocables como s:fn()).

FunciónQué hace
string.len(s)Longitud de la cadena
string.sub(s, i, j)Subcadena del índice i al j
string.upper(s)Copia en mayúsculas
string.rep(s, n)Repite la cadena n veces
string.find(s, p)Busca un patrón, devuelve inicio/fin
string.match(s, p)Devuelve la primera coincidencia del patrón
string.gsub(s, p, r)Reemplaza todas las coincidencias del patrón
string.format(fmt, ...)Da formato a valores en una cadena

Bibliotecas table y math

Ayudantes para trabajar con tablas de estilo array y con números.

FunciónQué hace
table.insert(t, v)Añade un valor al final
table.insert(t, i, v)Inserta v en la posición i
table.remove(t, i)Elimina y devuelve el elemento en i
table.concat(t, ", ")Une los elementos en una cadena
table.sort(t)Ordena el array en el sitio
math.floor(x) / math.ceil(x)Redondea hacia abajo / arriba
math.max(...) / math.min(...)Argumento mayor / menor
math.random(1, 6)Entero aleatorio dentro de un rango

Metatablas (breve)

Las metatablas te permiten personalizar cómo se comportan las tablas: operadores, indexación y más.

OperaciónSintaxis
Establecer una metatablasetmetatable(t, mt)
Obtener una metatablagetmetatable(t)
Respaldo para claves faltantesmt.__index = defaults
Valor por defecto vía funciónmt.__index = function(t, k) ... end
Personalizar la sumamt.__add = function(a, b) ... end
Personalizar tostringmt.__tostring = function(t) ... end
POO basada en prototiposmt.__index = ClassTable

La sintaxis de Lua que más usas, en una sola página. Esta hoja de trucos de Lua es una referencia rápida para el núcleo del lenguaje: variables y tipos, cadenas, control de flujo, funciones y las tablas que sirven como la única y flexible estructura de datos de Lua, además de un vistazo a las bibliotecas estándar y las metatablas.

Todo lo que hay aquí es Lua estándar y se ejecuta en un intérprete sin modificar. Copia lo que necesites o prueba cada fragmento en vivo en el playground de Lua, sin necesidad de instalar nada.

Preguntas frecuentes sobre la hoja de trucos de Lua

¿Esta hoja de trucos de Lua es gratis?
Sí. Esta hoja de trucos de Lua es completamente gratuita, sin necesidad de registrarse. Guárdala en favoritos y vuelve cuando necesites consultar una operación de tabla, una función de cadenas o una palabra clave de control de flujo.
¿Cómo puede una tabla de Lua ser a la vez un array y un mapa?
Una tabla es simplemente un conjunto de pares clave-valor, y la clave puede ser cualquier valor. Cuando usas claves enteras consecutivas que empiezan en 1 ({10, 20, 30}) la tabla se comporta como un array; cuando usas claves de cadena ({name = "Ada"}) se comporta como un mapa. Incluso puedes mezclar ambos en la misma tabla. Por eso Lua solo necesita un tipo estructurado: la tabla cubre arrays, diccionarios, conjuntos y objetos.
¿Por qué Lua usa indexación basada en 1?
Por convención y diseño, los arrays de Lua empiezan en el índice 1, no en 0, así que t[1] es el primer elemento y #t es el conteo. El operador de longitud # y las funciones de biblioteca como table.insert e ipairs asumen todas esta convención basada en 1, así que respetarla mantiene tu código de arrays funcionando como se espera.
¿Puedo practicar Lua en línea?
Sí. Abre el playground de Lua para ejecutar cualquier fragmento de esta hoja de trucos en tu navegador, sin necesidad de instalar Lua. Cuando quieras estructura, el curso interactivo y gratuito de Lua de Coddy te lleva paso a paso desde las variables y las tablas hasta las funciones y las metatablas.
¿Esta hoja de trucos es buena para principiantes?
Sí. Está organizada desde los temas más comunes (variables, cadenas, tablas, control de flujo) hasta los avanzados (las bibliotecas estándar y las metatablas), de modo que puedes usar las secciones de arriba desde el primer día e ir avanzando hacia el resto.
Coddy programming languages illustration

Aprende Lua con Coddy

COMENZAR