Fundamentos del lenguaje
27 pasos en 9 series de Lua.
Lua es el lenguaje embebido: un intérprete completo en unos cientos de kilobytes de C ANSI, diseñado en la PUC-Rio de Brasil para meterse dentro de un programa más grande y recibir el volante. Los addons de World of Warcraft, los juegos de Roblox, las configuraciones de Neovim, los scripts de Redis y el manejo de peticiones de nginx lo hablan. Una sola estructura de datos — la tabla — hace de arreglo, record, módulo y clase, y las metatablas convierten esa única idea en el sistema de objetos que la aplicación anfitriona necesite.
Este tour teclea el núcleo completo: locales y sombras, string.format y los métodos con dos puntos, and/or como selector de valores, los tres bucles, tablas como arreglos y records con pairs e ipairs, funciones con retornos múltiples y varargs y clausuras, map y filter de tres líneas, metatablas desde la herencia por __index hasta los metamétodos de operadores y la POO del dos puntos, patrones de Lua, manejo de errores con pcall, corrutinas, iteradores propios, la biblioteca math y el patrón de módulos. El Bis es el trío de scripts de siempre en Lua prolijo de biblioteca estándar — conteos con gmatch, escaleras de elseif y barras de string.rep.
Valores
- La forma del scriptEl Lua más pequeño: locales, print y string.format.
- locallocal acota un nombre a su bloque; la asignación pelada va global.
- StringsConcatena con .., formatea con string.format, # mide.
Control de flujo
- if y elseifLos bloques cierran con end; and/or hacen de selector de valores.
- BuclesEl for numérico cuenta; while guarda; repeat prueba al final.
- Tipos y conversióntype inspecciona; tostring y tonumber convierten explícito.
Tablas
- Tablas como arreglosUna estructura para todo, 1-indexada del lado de arreglo.
- Tablas como recordsClaves de string y acceso con punto vuelven record la misma tabla.
- pairs e ipairsipairs recorre la parte de arreglo en orden; pairs cada clave.
- Tablas anidadasUn calabozo es una tabla de tablas de sala; el acceso encadena.
Funciones
- FuncionesValores como cualquier otro; or provee los argumentos por defecto.
- Retornos múltiplesLas funciones devuelven varios valores; los paréntesis truncan a uno.
- Varargs... junta argumentos y los reenvía intactos.
Clausuras
- ClausurasUna función captura los locales de alrededor, vivos entre llamadas.
- Funciones de orden superiormap y filter son ayudantes de tres líneas sobre ipairs.
- Iteradores propiosEl for genérico maneja cualquier función que devuelva lo próximo.
Metatablas
- __indexLas búsquedas perdidas van al respaldo: herencia en una línea.
- Metamétodos__add y __tostring enseñan operadores a tipos nuevos.
- El dos puntosDefinición y llamada de método pasan self en un solo hábito.
Patrones y errores
- PatronesEl matching propio de Lua: %d, %a, capturas, gmatch, gsub.
- pcallerror lanza; pcall atrapa y lo vuelve un retorno de estado.
- CorrutinasPausa en yield, retoma donde quedó.
La biblioteca
- La biblioteca mathfloor y ceil, // y %, y un tipo numérico con dos caras.
- MódulosUn módulo es una tabla que un archivo devuelve; require la cachea.
Bis
- word_freq.luaUna tabla de frecuencias con gmatch, una tabla de conteo y un orden.
- grade_report.luaBoletines desde un roster de tablas, una escalera elseif y format.
- temp_stats.luaUna semana de temperaturas: extremos por índice, barras y saltos.