En Lua, el lenguaje no tiene soporte nativo para constantes, pero es posible simularlas mediante convenciones o técnicas específicas para definir valores inmutables. Esto es útil para garantizar que ciertos valores no se modifiquen en el programa.
Aunque Lua no incluye palabras clave como const, las constantes se pueden definir utilizando variables globales o locales y adoptando convenciones como escribir el nombre en mayúsculas. También se puede emplear metatablas para hacer que los valores sean verdaderamente inmutables.
Se pueden declarar variables y tratarlas como constantes por convención:
local PI = 3.14159 -- Constante local
MAX_USERS = 100 -- Constante global (convención)
Las metatablas permiten restringir la modificación de un valor:
CONST = {}
setmetatable(CONST, {
__index = function(_, key)
error("Intento de acceso a un valor no existente: " .. key)
end,
__newindex = function(_, key, _)
error("No se pueden modificar las constantes: " .. key)
end
})
CONST.PI = 3.14159
print(CONST.PI)
-- CONST.PI = 4 -- Esto lanzará un error
local GRAVITY = 9.8
print("La gravedad es:", GRAVITY)
CONST = {}
setmetatable(CONST, {
__index = function(_, key)
error("Constante no encontrada: " .. key)
end,
__newindex = function(_, key, _)
error("No se puede modificar la constante: " .. key)
end
})
CONST.PI = 3.14159
print("El valor de PI es:", CONST.PI)
-- CONST.PI = 4 -- Esto generará un error
| Método | Ventaja | Ejemplo |
|---|---|---|
| Variable local o global | Sencillo y eficiente |
local VALUE = 42
|
| Metatablas | Garantiza inmutabilidad |
setmetatable({...}, {...})
|
| Convenciones (nombres en mayúsculas) | Refleja la intención del programador |
MAX_COUNT = 10
|
Consulta más detalles sobre Lua en la documentación oficial:
Jorge García
Fullstack developer