En Elixir, no existen constantes tradicionales como en otros lenguajes. Sin embargo, se pueden lograr comportamientos similares al declarar variables inmutables (bindings) o al usar módulos con atributos o funciones que devuelvan valores fijos.
En Elixir, las variables son inmutables por naturaleza, lo que significa que una vez asignadas, no pueden ser cambiadas. Aunque no son estrictamente constantes, puedes tratarlas como tales dentro de su ámbito.
pi = 3.14159
nombre = "Elixir"
Una vez asignado, el valor no puede cambiar en el mismo ámbito. Sin embargo, puede ser reescrito en otro contexto.
En Elixir, los atributos de módulo (@
) pueden usarse para definir valores que se comportan como constantes en el módulo. Este enfoque es más común y proporciona una solución organizada.
defmodule Configuracion do
@url_base "https://ejemplo.com"
@timeout 5000
def url_base, do: @url_base
def timeout, do: @timeout
end
Acceder a los valores:
IO.puts Configuracion.url_base() # Imprime: https://ejemplo.com
IO.puts Configuracion.timeout() # Imprime: 5000
Otra forma común de manejar valores constantes es usar funciones sin argumentos que devuelvan un valor fijo. Este método es flexible y encaja con el diseño funcional de Elixir.
defmodule Configuracion do
def url_base, do: "https://ejemplo.com"
def timeout, do: 5000
end
Este enfoque tiene la ventaja de ser dinámico, permitiendo a las funciones calcular valores derivados o configuraciones en tiempo de ejecución.
defmodule Matematicas do
@pi 3.14159
def pi, do: @pi
def area_circulo(radio), do: @pi * radio * radio
end
IO.puts Matematicas.area_circulo(5) # Imprime: 78.53975
defmodule Config do
@max_usuarios 100
@tema "oscuro"
def max_usuarios, do: @max_usuarios
def tema, do: @tema
end
IO.puts Config.max_usuarios() # Imprime: 100
IO.puts Config.tema() # Imprime: oscuro
1. Usa atributos de módulo (@
) para valores que se mantendrán fijos en un módulo.
2. Prefiere funciones sin argumentos para valores dinámicos o configuraciones.
3. Mantén tus constantes organizadas en módulos temáticos.
Consulta la documentación oficial de Elixir para más detalles:
Jorge García
Fullstack developer