typestar

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.

Empieza este tour

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

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

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.

Los otros tours de Lua