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

Anidamiento y multi alias/require/import

getting_started/nested_modules.livemd

Anidamiento y multi alias/require/import

Anidamiento de módulos

Ahora que sabes acerca de los alias, podemos hablar acerca del anidamiento de módulos y como funciona en Elixir. Considera el siguiente ejemplo:

defmodule Foo do
  defmodule Bar do
  end
end

En el ejemplo anterior se definen dos módulos: Foo y Foo.Bar. El segundo puede ser accedido como Bar desde Foo siempre y cuando tengan el mismo alcance léxico.

Si, luego, el módulo Bar es movido fuera de la definición del módulo Foo, debe ser referenciado por su nombre completo Foo.Bar o un atajo creado con la directiva alias.

NOTA: En Elixir, no tienes que definir el módulo Foo antes de poder definir el módulo Foo.Bar, porque ellos son efectivamente independientes. Lo anterior puede ser reescrito como:

defmodule Foo.Bar do
end

defmodule Foo do
  alias Foo.Bar
  # Can still access it as `Bar`
end

Multi alias/import/require

Es posible crear alias, import o require a múltiples módulos de una vez. Esto es particularmente útil cuando comienzas a crear módulos anidados, lo cual es bastante común cuando creas aplicaciones en Elixir. Por ejemplo, imagina que tienes una aplicación donde todos los módulos están anidados a partir de MyApp, puedes crear un atajo a los módulos MyApp.Foo, MyApp.Bar, MyApp.Baz de una vez si haces:

alias MyApp.{Foo, Bar, Baz}

Con esto, haz finalizado la gira a las directivas que nos permiten reusar código en Elixir. Ahora pasemos a hablar de los atributos en módulos.