Elixir:带有点和嵌套模块的模块名称 - 它们是等价的吗?

Wan*_*ker 10 elixir

以下代码是否相同?至于调用模块方法,在两种情况下都会使用Utilities.StringUtils.some_method(...)

嵌套模块

defmodule Utilities do
   defmodule StringUtils do
   end
end
Run Code Online (Sandbox Code Playgroud)

名称中带点的模块

defmodule Utilities.StringUtils do
end
Run Code Online (Sandbox Code Playgroud)

Jos*_*lim 22

是的,不是.第一个定义根据模块名称自动定义别名:

defmodule Utilities do
  defmodule StringUtils do
  end

  # Can access the module as StringUtils
end
Run Code Online (Sandbox Code Playgroud)

而第二个:

defmodule Utilities.StringUtils do
  # Cannot access the module as StringUtils
end
Run Code Online (Sandbox Code Playgroud)

除此之外,两者定义的代码和模块完全相同.