Elixir 是否有根长生不老药模块?
当我在Elixir中定义一个模块并在IEX中对其执行类似的Elixir 是否有根长生不老药模块?,elixir,Elixir,当我在Elixir中定义一个模块并在IEX中对其执行类似的to_string操作时 MyModule>to_字符串 我会得到结果的 “Elixir.MyModule” 是否有一个根级别的Elixir模块供所有其他模块使用?为什么有一个长生不老药前缀看起来像另一个模块 说它是一个名称空间,但我读过其他文章说Elixir不支持名称空间。我相信这是为了在Elixir和Erlang模块之间做出区别。所有elixir模块都以elixir前缀开头。 MyModule只是atom的别名:“Elixir.MyM
to_string
操作时
MyModule>to_字符串
我会得到结果的
“Elixir.MyModule”
是否有一个根级别的Elixir
模块供所有其他模块使用?为什么有一个长生不老药前缀看起来像另一个模块
说它是一个名称空间,但我读过其他文章说Elixir不支持名称空间。我相信这是为了在Elixir和Erlang模块之间做出区别。所有elixir模块都以
elixir
前缀开头。
MyModule
只是atom的别名:“Elixir.MyModule”:
标准函数调用:
iex(2)> MyModule.f()
"MyModule.f()"
iex(3)> :"Elixir.MyModule".f()
"MyModule.f()"
Erlang风格函数调用:
iex(2)> MyModule.f()
"MyModule.f()"
iex(3)> :"Elixir.MyModule".f()
"MyModule.f()"
原子等于别名吗
iex(4)> :"Elixir.MyModule" == MyModule
true
iex(5)> :"Elixir.MyModule" == Elixir.MyModule
true
Elixir
前缀是为了方便:
iex(6)> MyModule == Elixir.MyModule
true
在“Programming Elixir 1.6”中,Dave Thomas给出了以下示例:
除雾模块 外面的做
除雾模块 内部的做
def 内函数做
结束
结束
def 外函数做
Inner.Inner_func
结束
结束
Outer.Outer_func
外.内.内函数
他接着解释说:
“Elixir中的模块嵌套是一种错觉,所有模块都是在顶层定义的。当我们在另一个模块中定义一个模块时,Elixir只需在外部模块名和内部模块名之间加上一个点。这意味着我们可以直接定义嵌套模块。”侧注:Elixir确实支持名称空间(如果我们使用的是“名称空间”的常见含义。)