Saltar al contenido
Aback Tools Logo

Cómo Comentar en Lua: Comentarios de Una Línea, de Bloque y Doc de Luau

Cómo comentar en Lua: comentarios de una línea con --, bloques de corchetes largos --[[ ]], niveles de corchetes para anidar, el truco de alternancia, comentarios doc --- de Luau en Roblox Studio y eliminación de comentarios antes del despliegue.

DH
Tutorials & How-Tos11 min de lectura2,600 palabras

Lua usa dos estilos de comentario: un prefijo de doble guion para comentarios de una línea y delimitadores de corchetes largos para comentarios de bloque multilínea. Ambos son simples, pero la sintaxis multilínea tiene algunos casos límite que confunden a los desarrolladores que vienen de lenguajes estilo C. Esta guía cubre toda forma de comentario en Lua, cuándo usar cada una y cómo eliminarlas limpiamente cuando estés listo para desplegar.

--Prefijo de una líneaFunciona en cualquier línea
--[[ ]]Comentario de bloqueAbarca líneas ilimitadas
0Palabras clave especialesNo se necesita palabra clave

Por qué importan los comentarios en Lua

Lua es un lenguaje minimalista de tipado dinámico. No tiene anotaciones de tipo formales, ni docstrings obligatorias, ni generador de documentación integrado. Eso convierte a los comentarios en el mecanismo principal para explicar la intención, documentar firmas de funciones y marcar cambios temporales de código. En un lenguaje donde una función como `process(x, y, z)` no da pista alguna sobre qué significan x, y y z, una sola línea de comentario evita horas de confusión a quien lea el guion después — incluido tú.

Los comentarios cumplen tres propósitos distintos en código Lua real: documentación (explicar qué hace una función, variable o módulo), anotación (marcar el porqué tras una lógica no obvia) y depuración (desactivar temporalmente bloques de código sin borrarlos). Cada propósito pide un estilo de comentario ligeramente diferente.

Dónde se usan comúnmente los comentarios en Lua

  • Encabezados de archivo - autor, fecha, nombre del módulo y breve descripción al principio de cada guion.
  • Documentación de funciones - descripciones de parámetros, valores de retorno y efectos secundarios justo antes de la definición de la función.
  • Anotaciones en línea - notas breves al final de una línea que explican un número mágico, una solución temporal o una dependencia.
  • Desactivación temporal - envolver un bloque de código en un comentario de bloque para apagarlo durante el desarrollo sin perder el código.
  • Marcadores TODO / FIXME - señalar trabajo en curso o bugs conocidos para atención posterior.

Note

Lua no tiene un formato nativo de comentario de documentación como JSDoc o los docstrings de Python. El Luau Language Server usado en Roblox Studio reconoce una convención de triple guion `---` para anotaciones de tipo, pero es una extensión de herramientas — el runtime de Lua mismo trata `---` como un comentario ordinario de una línea.

Comentarios de una línea

El comentario de una línea es la forma más común en Lua. Comienza con dos guiones consecutivos (`--`) y se extiende hasta el final de la línea actual. El intérprete ignora por completo todo desde `--` hasta el siguiente salto de línea.

single_line_examples.lua
lua
-- This entire line is a comment
local speed = 150  -- pixels per second

-- TODO: replace magic number with a named constant
local MAX_RETRIES = 5

--[[ This looks like a block comment opener, but only if
     followed immediately by the double bracket ]]
-- The above is two separate single-line comments

Reglas de colocación

Un comentario de una línea puede aparecer en cualquier lugar donde el espacio en blanco sea válido: en su propia línea, al final de una sentencia o entre tokens. La única restricción es que `--` no debe aparecer dentro de una cadena literal — entre comillas o corchetes largos se trata como texto literal, no como marcador de comentario.

placement.lua
lua
local url = "https://example.com/api--v2"  -- the -- inside the string is NOT a comment
local greeting = "hello"  -- this end-of-line comment IS a comment

if speed > 100 then  -- check speed threshold
  slow_down()
end

La convención del doble guion

A diferencia de C o JavaScript donde `//` es común, Lua usa `--` exclusivamente. Si vienes de otro lenguaje, la memoria muscular puede empujarte hacia `//` o `#`. Ninguno es un marcador de comentario válido en Lua estándar — `//` es el operador de división de suelo en Lua 5.3+ y `#` es el operador de longitud. Usa siempre `--` para comentarios de línea.

Warning

Escribir `// comment` en Lua 5.3 o posterior no produce un error de sintaxis — se interpreta como división de suelo de nada, lo que sí produce un error. Escribir `# comment` al inicio de un archivo solo se permite como línea shebang (`#!/usr/bin/lua`) en sistemas Unix; en cualquier otro lugar causa un error de sintaxis. Usa `--` en todos los casos.

Comentarios de varias líneas (bloque)

Los comentarios de bloque multilínea en Lua usan la sintaxis de corchetes largos. Un comentario de bloque abre con `--[[` y cierra con `]]`. El intérprete de Lua ignora todo entre esos dos delimitadores, incluidos saltos de línea, indentación y cualquier secuencia `--` dentro del bloque.

block_comment.lua
lua
--[[
  Module: PlayerController
  Author: Dev Team
  Description: Handles player movement, jump mechanics, and ground detection.
  Dependencies: PhysicsEngine, InputMap
]]

local PlayerController = {}

--[[
  Moves the player by the given delta vector.
  @param player  table  The player object
  @param delta   vec2   Movement direction and magnitude
  @return        nil
]]
function PlayerController.move(player, delta)
  player.position = player.position + delta
end

Niveles de corchetes para anidar

Los bloques estándar `--[[ ]]` no pueden contener `]]` literalmente — cualquier `]]` dentro del bloque termina el comentario. Lua resuelve esto con niveles de corchetes: añades signos igual entre los corchetes para crear un par de apertura/cierre único. Un bloque de nivel 1 usa `--[=[` y `]=]`, el nivel 2 usa `--[==[` y `]==]`, y así sucesivamente. El delimitador de cierre debe coincidir exactamente con el nivel del corchete de apertura.

nested_brackets.lua
lua
--[=[
  This is a level-1 block comment.
  It can safely contain standard --[[ double-bracket ]] syntax
  without ending the outer comment block early.
  Useful when commenting out existing block-commented code.
]=]

--[==[
  Level-2 block comment.
  Can contain both [[ ]] and [=[ ]=] inside it safely.
]==]

Comentario de bloque vs. varios comentarios de una línea

AspectoComentario de bloque --[[ ]]Varias líneas --
Sintaxis--[[ ... ]]-- en cada línea
Para desactivar código✓ Ideal - envuelve cualquier bloque✗ Tedioso para secciones largas
Para documentación✓ Estándar para encabezados de archivo/función✓ Común para notas en línea
Alternancia en el editorVaría según el plugin del editor✓ La mayoría de editores lo alternan automáticamente
Soporte de anidamiento✓ Con niveles de corchetes [=[ ]=]✗ No aplicable
Legibilidad✓ Límite claro de inicio/fin✓ Se escanea línea por línea fácilmente

Tip

La mayoría de los editores con soporte de Lua (VS Code con la extensión Lua, Roblox Studio, ZeroBrane) tienen un atajo de **alternar comentario** — normalmente Ctrl+/ o Cmd+/ — que añade o quita `--` de las líneas seleccionadas. Para comentar grandes bloques de código, el enfoque manual con `--[[` suele ser más rápido que alternar docenas de líneas individuales.

Comentar bloques de código

Desactivar temporalmente una función, bucle o bloque condicional es uno de los usos más prácticos de los comentarios durante el desarrollo. La sintaxis de comentario de bloque de Lua lo hace limpio y reversible — pero hay un patrón común que lo hace aún más rápido de alternar.

1

Envuelve el bloque con --[[ y ]]

Coloca `--[[` en su propia línea inmediatamente antes del código que quieres desactivar, y `]]` en su propia línea inmediatamente después. El intérprete de Lua saltará el bloque completo. No se borra código — puedes restaurarlo al instante eliminando las dos líneas delimitadoras.

2

Usa el truco alternable de --[[

Los desarrolladores suelen usar un patrón de alternancia ingenioso: ponen `--[[` antes de un bloque y `--]]` (fíjate en el `--` extra) al final. Para reactivar el bloque, cambian `--[[` por `---[[`. Como `---[[` ahora es un comentario de una línea (el `--` comenta el `-[[`), el bloque ya no está dentro de un comentario de bloque y se ejecuta normalmente.

toggle_pattern.lua
lua
-- DISABLED: change --[[ to ---[[ to re-enable this block
--[[
local debug_overlay = require("DebugOverlay")
debug_overlay.show_hitboxes = true
debug_overlay.show_fps = true
--]]

-- To enable: change the opening --[[ to ---[[
---[[
local debug_overlay = require("DebugOverlay")
debug_overlay.show_hitboxes = true
debug_overlay.show_fps = true
--]]
3

Usa niveles de corchetes si el bloque ya contiene --[[ ]]

Si el código que estás comentando ya contiene comentarios de bloque `--[[ ]]`, un envoltorio simple `--[[` terminará en el primer `]]` que encuentre — que es el corchete de cierre del comentario interno, no el tuyo. En este caso, usa un bloque de nivel 1 `--[=[` y cierra con `]=]` para envolver el bloque exterior de forma segura.

Validador de Sintaxis Lua

Tras editar comentarios o reestructurar bloques, valida tu guion Lua en busca de errores de sintaxis y delimitadores de bloque sin emparejar con diagnósticos conscientes de la línea.

Open tool

Buenas prácticas de comentario

Conocer la sintaxis es la parte fácil. Saber cuándo y cómo comentar bien es lo que separa el código Lua mantenible de un guion imposible de trabajar seis meses después. Estas prácticas aplican específicamente a Lua, aunque la mayoría son principios universales para cualquier lenguaje de tipado dinámico.

Comenta el porqué, no el qué

El código ya muestra lo que sucede. Un comentario que dice `-- incrementa i en 1` junto a `i = i + 1` no añade información alguna. Los comentarios ganan su lugar cuando explican decisiones: por qué se eligió un algoritmo concreto, por qué un límite se fija en un valor específico o por qué una función se llama en un orden inusual. Si el razonamiento es claro a partir del propio código, el comentario es opcional.

Documenta las firmas de las funciones explícitamente

Lua no tiene un sistema de tipos nativo para documentar parámetros. Un breve comentario de bloque sobre cada función pública que liste nombres de parámetros, sus tipos esperados y el valor de retorno es uno de los hábitos de comentario de mayor valor en Lua. Es especialmente cierto para cualquier función consumida por colaboradores o expuesta en un módulo.

documented_function.lua
lua
--[[
  Calculates the distance between two 2D points.
  @param x1 number  X coordinate of the first point
  @param y1 number  Y coordinate of the first point
  @param x2 number  X coordinate of the second point
  @param y2 number  Y coordinate of the second point
  @return   number  Euclidean distance between the two points
]]
local function distance(x1, y1, x2, y2)
  local dx = x2 - x1
  local dy = y2 - y1
  return math.sqrt(dx * dx + dy * dy)
end

Usa marcadores TODO y FIXME consistentes

Marca el trabajo incompleto con un prefijo consistente para poder buscarlo. `-- TODO:` señala mejoras planificadas, `-- FIXME:` señala bugs conocidos y `-- HACK:` señala soluciones temporales que necesitarán soluciones apropiadas después. La mayoría de editores y herramientas de búsqueda de código reconocen estos prefijos y pueden filtrar resultados para mostrar solo las líneas marcadas.


Evita el exceso de comentarios

Un guion denso en comentarios para cada asignación de variable es más difícil de leer, no más fácil. Los comentarios añaden peso visual — cuando cada línea tiene uno, los comentarios importantes se pierden en el ruido. Apunta a una densidad donde los comentarios marquen decisiones genuinamente no obvias y documenten los contratos de funciones públicas, sin narrar cada operación.

  • Sí comentar: elecciones de algoritmo no obvias, números mágicos con contexto de negocio, soluciones temporales para bugs conocidos.
  • No comentar: nombres de variables autoexplicativos, modismos estándar (como `for i = 1, #t do`) y operaciones obvias.
  • Sí comentar: cada función de un módulo compartido con tipos de parámetros y valores de retorno.
  • No comentar: funciones auxiliares privadas cuyo propósito es evidente por su nombre y lugar de llamada.
  • Sí comentar: la razón de un condicional que no sea intuitivamente obvio a partir de la condición misma.

Comentarios en Roblox Luau

Roblox usa Luau, un derivado de tipado estático de Lua 5.1. La sintaxis de comentario es idéntica a la de Lua estándar — `--` para una línea y `--[[ ]]` para varias. Luau añade una extensión significativa: el comentario de documentación de triple guion `---`, que el Luau Language Server lee para proporcionar documentación al pasar el ratón, sugerencias de parámetros e información de tipo directamente dentro de Roblox Studio.

Comentarios de documentación de Luau (---)

Cuando escribes `---` sobre una función o variable, el LSP de Luau trata el comentario como documentación estructurada. Puedes anotar tipos de parámetros con `@param`, tipos de retorno con `@return` y avisos de obsolescencia con `@deprecated`. Estos no son aplicados por el runtime — son leídos por las herramientas del servidor de lenguaje y mostrados como tooltips en el editor de guiones de Studio.

luau_doc_comment.lua
lua
--- Fires a projectile from the given origin in the given direction.
--- @param origin     Vector3  The world position to spawn the projectile
--- @param direction  Vector3  Normalised direction vector
--- @param speed      number   Initial speed in studs per second
--- @return           BasePart The spawned projectile part
local function fireProjectile(origin, direction, speed)
  -- implementation
end

Patrones prácticos de comentario en Roblox

En el desarrollo de Roblox, los comentarios cumplen un rol adicional: hacer los guiones legibles para colaboradores que quizá no escribieron el código original. Los juegos de Roblox frecuentemente crecen hasta convertirse en bases de código grandes mantenidas por equipos, y los comentarios `--` son la herramienta principal para documentar contratos de eventos remotos, APIs de módulos y el propósito de cada LocalScript.

  • Contratos de eventos remotos - comenta qué argumentos espera un RemoteEvent o RemoteFunction, ya que el receptor no puede ver el código del llamador.
  • Encabezados de API de módulos - usa un bloque `--[[ Module: ... ]]` al principio de cada ModuleScript para describir su propósito e interfaz pública.
  • Código obsoleto - marca APIs antiguas con `-- @deprecated: use NewFunction() instead` para que los colaboradores sepan qué evitar.
  • Separadores de sección - usa separadores estilo `-- ------------------ Initialization ------------------` para particionar visualmente guiones largos en zonas legibles.

Si alguien que no conoce tu base de código abriera este guion mañana, ¿entendería qué hace cada función sin ejecutar el juego? Ese es el nivel de calidad de comentario que vale la pena perseguir.

- Buenas prácticas de desarrollo Roblox

Formateador de Lua

Formatea tus guiones Lua y Luau con indentación y espaciado consistentes. Basado en el navegador, sin subidas ni registros - funciona para guiones de Roblox y Lua estándar por igual.

Open tool

Cuándo eliminar comentarios

Los comentarios son esenciales durante el desarrollo, pero hay escenarios específicos donde eliminarlos es el movimiento correcto: desplegar guiones de producción, ofuscar código de juego, reducir el tamaño del archivo de guion o preparar una build minificada para un entorno sensible al rendimiento.

Por qué los comentarios aumentan el tamaño del guion

En Lua, los archivos fuente se compilan a bytecode en tiempo de ejecución. Los comentarios se eliminan durante este paso de compilación, así que no impactan el tamaño del bytecode ni la velocidad de ejecución. Sin embargo, en entornos donde el archivo fuente mismo se transfiere — como Roblox Studio replicando guiones a los clientes del juego, o un servidor web sirviendo un archivo de configuración Lua — el tamaño del texto en bruto importa. Un guion muy comentado puede ser un 20-40% más grande que su equivalente sin comentarios.

Eliminar comentarios manualmente vs. con una herramienta

Eliminar comentarios manualmente es propenso a errores. Es fácil borrar accidentalmente un `]]` de cierre que pertenece a una cadena y no a un comentario, o dejar marcadores de comentario huérfanos que causan errores de sintaxis. Una herramienta dedicada de eliminación de comentarios analiza la gramática completa de Lua y entiende la diferencia entre un `--` dentro de una cadena literal y un `--` que inicia un comentario. Elimina solo los comentarios genuinos dejando cadenas, lógica y estructura completamente intactas.

El eliminador de comentarios Lua de Aback Tools maneja tanto comentarios de una línea `--` como multilínea `--[[ ]]` en una sola pasada. Se ejecuta enteramente en tu navegador — tu código fuente nunca se sube a ningún servidor. Pega tu guion, haz clic en eliminar y obtén la salida limpia al instante.

Eliminación de comentarios en el pipeline de despliegue

Para guiones que pasan por un paso de build, la eliminación de comentarios puede combinarse con otras optimizaciones de código. El minificador de Lua elimina comentarios y colapsa espacios en blanco en un paso — útil cuando quieres tanto un archivo fuente legible (con comentarios) como una versión desplegada compacta (sin ellos). El compresor de Lua va más allá, mostrando comparaciones de tamaño antes/después para que puedas medir exactamente cuánto ahorra la optimización.

  • Fuente de desarrollo - conserva todos los comentarios; usa el formateador para mantener una estructura legible.
  • Control de versiones - haz commit del fuente completamente comentado; nunca committees archivos sin comentarios como fuente canónico.
  • Guiones desplegados/replicados - elimina comentarios con el eliminador de comentarios y, opcionalmente, minifica para reducir tamaño.
  • Guiones ofuscados - los comentarios siempre se eliminan durante la ofuscación; no se necesita paso manual.
  • Librerías de código abierto - conserva los comentarios en el fuente; opcionalmente ofrece una build minificada en una carpeta `/dist`.

Tip

Trata siempre el **archivo fuente comentado** como la versión canónica en el control de versiones. Genera builds sin comentarios y minificadas a partir de él como artefactos. Commitear un archivo minificado o sin comentarios como fuente principal hace el mantenimiento futuro significativamente más difícil.

Eliminador de Comentarios Lua

Elimina todos los comentarios -- y --[[ ]] de cualquier guion Lua en un clic. Conserva cadenas, lógica y estructura. Basado en el navegador y completamente privado.

Open tool

Key takeaways

  • Lua usa -- para comentarios de una línea y --[[ ]] para comentarios de bloque multilínea - no hay otros marcadores de comentario.
  • Los niveles de corchetes largos (--[=[ ]=], --[==[ ]==]) permiten anidar comentarios de bloque dentro de comentarios de bloque.
  • El truco de alternancia --[[ (cambiar entre --[[ y ---[[) te permite habilitar y deshabilitar bloques de código en una sola pulsación.
  • Luau en Roblox Studio soporta comentarios doc --- para la documentación al pasar el ratón del Luau Language Server - en runtime siguen siendo comentarios simples.
  • Comenta el porqué y el contrato, no el qué - cada operación autoexplicativa que recibe un comentario añade ruido en vez de claridad.
  • Elimina los comentarios antes del despliegue con el eliminador de comentarios Lua - maneja ambos estilos sin tocar cadenas.
  • Conserva siempre el fuente completamente comentado en el control de versiones; genera builds sin comentarios o minificadas como artefactos de despliegue.

Preguntas frecuentes

In Lua, you write a single-line comment by starting a line (or the end of a line) with two hyphens: --. Everything after the -- on that line is ignored by the interpreter. For multi-line comments, use --[[ to open the block and ]] to close it. Everything between those delimiters is treated as a comment, regardless of how many lines it spans.

The Lua multi-line comment syntax uses long brackets: --[[ to open and ]] to close. You can also use long bracket levels for nesting - --[=[ opens a level-1 block closed by ]=], --[==[ opens a level-2 block closed by ]==], and so on. This nesting feature lets you comment out blocks that already contain standard --[[ ]] comments without breaking the outer comment.

Yes. Lua supports block (multi-line) comments using the --[[ ... ]] syntax. The opening delimiter is -- followed by a long bracket [[ and the closing delimiter is the matching ]]. Block comments can span any number of lines and are commonly used for file headers, function documentation, and temporarily disabling sections of code during debugging.

Wrap the section with --[[ on its own line before the code and ]] on its own line after it. The interpreter will ignore everything in between. If the code you are commenting out itself contains --[[ ]] blocks, use a higher bracket level like --[=[ ... ]=] for the outer comment to avoid the inner ]] terminating the block early.

A double hyphen -- starts a single-line comment that ends at the next newline. Adding long brackets immediately after the -- (i.e. --[[) turns it into a block comment that spans multiple lines until the matching ]]. The -- is always the comment marker in Lua; the long brackets control whether the comment terminates at end-of-line or at an explicit closing delimiter.

Not directly with plain --[[ ]] - a ]] inside a --[[ block will close the comment early. To nest comments, use increasing bracket levels. --[=[ ... ]=] and --[==[ ... ]==] are level-1 and level-2 block comments respectively. You can nest --[[ ]] inside --[=[ ]=] safely because the closing ]] does not match the outer ]=].

It depends on your goal. For production deployments or minified game scripts where file size and load time matter, removing comments is good practice - it reduces the script size and makes the code harder to casually read. For open-source libraries or any code you maintain long-term, keep comments in the source file and only strip them in the deployed build.

Luau, Roblox's derivative of Lua 5.1, uses identical comment syntax: -- for single-line and --[[ ]] for multi-line block comments. Luau also supports a documentation comment convention using --- (triple hyphen) for type-annotation comments that tools like Luau Language Server read for hover documentation. These are still plain Lua comments at runtime - the Roblox engine ignores them like any other comment.

ShareXLinkedIn