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).
以上内容是否对您有帮助:

免费 AI IDE


更多建议: