别名 IEX 中模块/命名空间的所有内容

Posted

技术标签:

【中文标题】别名 IEX 中模块/命名空间的所有内容【英文标题】:Alias all contents of a module/namepsace in IEX 【发布时间】:2016-04-02 22:27:32 【问题描述】:

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

我希望能够输入Repo.all(User),而不是输入MyApp.Repo.all(MyApp.User)。我可以使用alias MyApp.Repo, as: Repo 单独为每件事起别名,但有没有办法一次性为所有事情做这件事?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

看起来效果很好,谢谢!我认为在每个项目的基础上对 iex.exs 文件中的 phoenix 模型进行别名处理将得到我所需要的,而不会冒太多冲突的风险。

以上是关于别名 IEX 中模块/命名空间的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

命名空间

命名空间

BackSlash(\),PHP 中命名空间别名中的命名空间分隔符

在 C++ 中,啥是“命名空间别名”?

C++ 中命名空间别名的范围是啥?

命名空间