Elixir 模块嵌套

2023-12-15 14:38 更新

我们已经讨论过了别名,现在我们可以讨论嵌套以及它在Elixir中的运作方式.思考下面的例子:

defmodule Foo do
  defmodule Bar do
  end
end

上述例子会定义两个模块:FooFoo.Bar.第二个可以被当做Bar里的Foo来访问,只要它们是在同一个语法空间里.上述代码等同于:

defmodule Elixir.Foo do
  defmodule Elixir.Foo.Bar do
  end
  alias Elixir.Foo.Bar, as: Bar
end

如果之后Bar模块在Foo的模块定义之外被调用,那就必须使用它的全名(Foo.Bar)或者别名.

 注意:在Elixir中,你不必再定义Foo.Bar模块之前先定义Foo模块,因为语言会将所有模块名转化为原子.你可以定义任意嵌套的模块而不需要定义任何链条上的模块(例如:Foo.Bar.Baz不需先定义FooFoo.Bar).


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号