在 Elixir 中,为啥在导入模块时“别名”优于“导入”?
Posted
技术标签:
【中文标题】在 Elixir 中,为啥在导入模块时“别名”优于“导入”?【英文标题】:In Elixir, why is "alias" preferred over "import" for importing the modules?在 Elixir 中,为什么在导入模块时“别名”优于“导入”? 【发布时间】:2022-01-03 12:37:49 【问题描述】:请注意,该语言通常不鼓励导入。在编写自己的代码时,更喜欢使用别名而不是导入。
我在documentation 中找到了这个声明,但那里没有进一步的解释。
【问题讨论】:
【参考方案1】:几个原因:
import
在这些模块之间创建了编译时依赖关系,这意味着导入模块编译需要等到导入模块编译完成。 alias
不要创建这样的依赖。
import
将使对导入函数的所有调用都像本地调用一样,而alias
将使它们仍然像远程调用一样。这是非常重要的区别,但超出了这个问题的范围。简而言之 - 热升级时本地呼叫“不起作用”。
import
s 经常会带入过多的模块作用域,当导入的模块会添加更多函数时会导致编译冲突(不能定义与导入函数同名的函数)。
【讨论】:
以上是关于在 Elixir 中,为啥在导入模块时“别名”优于“导入”?的主要内容,如果未能解决你的问题,请参考以下文章
在 Elixir 或 Erlang 中,如何在运行时动态创建和加载模块?
Elixir:应用程序立即退出,或者在运行 distillery 包时没有收到输入。为啥它会以这种方式工作,以及如何解决它?