Elixir 模块嵌套
2023-12-15 14:38 更新
我们已经讨论过了别名,现在我们可以讨论嵌套以及它在Elixir中的运作方式.思考下面的例子:
defmodule Foo do
defmodule Bar do
end
end
上述例子会定义两个模块:Foo
和Foo.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
不需先定义Foo
或Foo.Bar
).
以上内容是否对您有帮助:
更多建议: