在 IEX 中为 module/namepsace 的所有内容设置别名

Alias all contents of a module/namepsace in IEX

遵循 中有关如何使用当前项目的依赖项加载 iex 的建议,我能够以非常高效的方式使用 phoenix 框架依赖项。但是,必须为每一件事提供 Phoenix 项目的命名空间,这有点乏味。

我希望能够输入 Repo.all(User) 而不是输入 MyApp.Repo.all(MyApp.User)。我可以用 alias MyApp.Repo, as: Repo 为每件事单独添加别名,但是有什么办法可以同时为所有事情做这个吗?

您可以简单地调用 alias MyApp.Repo 而不是 MyApp.Repo, as: Repo — 它会使用模块名称的最后一部分。

在 Elixir 1.2 中,您可以通过一次调用将多个子模块别名为它们自己的名称:alias MyApp.{Repo, User}

您还可以选择 .iex.exs 文件来设置您的别名(根据 the IEx docs)。在这种情况下我不推荐它,因为你 运行 有命名冲突的风险。在 iex 会话中调用 alias 更明确。