在 Elixir 中,为什么 "alias" 优于 "import" 来导入模块?

In Elixir, why is "alias" preferred over "import" for importing the modules?

Note that imports are generally discouraged in the language. When working on your own code, prefer alias to import.

我在 documentation 中找到了这个声明,但那里没有进一步的解释。

几个原因:

  • import在这些模块之间创建编译时依赖,这意味着导入模块编译需要等到导入模块被编译。 alias 不要创建这种依赖关系。
  • import 将使所有对导入函数的调用都像本地调用一样,而 alias 将使它们仍然像远程调用一样。这是非常重要的区别,但超出了这个问题的范围。简而言之 - 热升级时本地通话“不起作用”。
  • imports 通常会在模块范围内引入太多内容,并且当导入的模块将添加更多函数时会导致编译冲突(您不能定义与导入函数同名的函数)。