这两个模块定义有什么区别?

Ole*_*ann 1 elixir phoenix-framework

关于凤凰城框架:我只是想知道写作之间有什么区别

defmodule MyApp.User do
  # some code
end
Run Code Online (Sandbox Code Playgroud)

只是

defmodule User do
  # some code
end
Run Code Online (Sandbox Code Playgroud)

稍后,只需编写User.function比MyApp.User.function更容易

Gaz*_*ler 6

这是命名空间模块以避免冲突.想象一下,您可以调用模块User然后使用名为user的库来定义User模块.你会发生碰撞.

您可以在使用模块的模块中使用别名User:

defmodule MyApp.SomeModule do
  alias MyApp.User

  def foo do
    User.some_function
  end
end
Run Code Online (Sandbox Code Playgroud)