Modulos
Introducción
En Elixir agrupamos varias funciones en modulos. Hasta ahora hemos usado diferentes modulos como por ejemplo el modulo String:
String.length("hello")
Para crear nuestros propios modulos en Elixir, usamos el macro defmodule
. Usamos el macro def
para definir funciones dentro de dicho modulo:
defmodule Math do
def sum(a, b) do
a + b
end
end
Math.sum(1, 2)
En nuestras proximas clases, nuestros ejemplos se iran haciendo mas grandes, por lo que puede ser tedioso escribirlos en la consola interactiva. Es hora que aprendamos como compilar codigo Elixir y como correr scripts en Elixir.
Compilación
La mayoria del tiempo es conveniente escribir modulos en ficheros de modo que sean compilados y reusados. Asumamos que tenemos un fichero llamado math.ex
con el siguiente contenido:
defmodule Math do
def sum(a, b) do
a + b
end
end
Este fichero puede ser compilado usando el comando elixirc
:
elixirc math.ex
Esto generara un fichero nombrado Elixir.Math.beam
que contiene el bytecode para el modulo definido. Si comenzamos iex
de nuevo, nuestra definicion del module estara disponible (dado que iex
se inicio desde el mismo directorio donde se encuentra el fichero que contiene el bytecode):
Math.sum(1, 2)
Mientras aprendemos y por conveniencia, Elixir tambien soporta el modo script, el cual es mas flexible y no genera ningun artefacto compilados.
Modo Script
En adicion a la extension .ex
, Elixir tambien soporta la extension .exs
para scripting. Elixir trata ambas extensiones de la misma manera, la unica diferencia es la intencion. Los archivos .ex
estan destinados a ser compilados mientras que la extension .exs
son para scripting. Es una convencion seguida por proyectos como mix
.
Por ejemplo, si creamos un fichero llamado math.exs
defmodule Math do
def sum(a, b) do
a + b
end
end
IO.puts(Math.sum(1, 2))
Y los ejecutamos con:
elixir math.exs
Dado que usamos elixir
en vez de elixirc
, el modulo fue compilado y cargado en la memoria, pero ningun fichero con extension .beam
fue escrito en disco. En los ejemplos siguientes, se recomienda escribir tu codigo en scripts y ejecutarlo como mostramos arriba.
Con esto finalizamos la introducción a los módulos en Elixir.