Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Modulos

getting_started/modules.livemd

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.