【问题标题】:In Erlang how can I import all functions from a module?在 Erlang 中,如何从模块中导入所有函数?
【发布时间】:2015-10-20 15:56:18
【问题描述】:

我不知道如何在不指定单个函数的情况下导入模块的所有函数。

【问题讨论】:

  • 解析转换来拯救? :-)
  • @罗伯塔。你的意思是我为什么要导入函数或者为什么有人会使用解析转换。
  • 为什么要导入所有函数。顺便说一句,你为什么要向我改变性别? :)
  • 抱歉,罗伯塔,我不明白你的意思?
  • 根据en.wikipedia.org/wiki/Robert,“女性版本是罗伯塔。意大利形式是罗伯托。” ;) 顺便说一句,导入所有函数会引起有趣的情况:如果将一个函数添加到导入的模块中,当导入模块中已经存在同名的函数时,导入模块将变为无效,尽管根本没有更改.这可能有点令人困惑:)

标签: erlang


【解决方案1】:

正如 Christian 所说,“不可能从一个模块中导入所有函数。”编译器没有import_all 指令,我认为这样做是为了阻止过多的函数导入。

导入函数而不是完全限定它们M:F(...) 通常是不好的风格。调用模块本地函数和另一个模块中的函数(代码加载规则)之间存在语义差异,因此我认为最好使外部调用显式。在导入 dict/lists/sets 模块函数时可能会出现例外情况,因为这些函数是众所周知的,并且在代码升级期间不太可能更改。

【讨论】:

    【解决方案2】:

    不可能从一个模块中导入所有函数。

    【讨论】:

      【解决方案3】:

      阅读自Erlang Programming Rules

      不要使用 -import,使用它会使 代码更难阅读,因为你不能 直接在什么模块中查看一个函数 被定义为。使用 exref(交叉引用 工具)来查找模块依赖关系。

      【讨论】:

      • 这是一个很好的建议,但可能有一个例外。数学模块。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 2013-07-31
      • 2021-09-01
      • 2017-04-03
      • 2013-05-27
      相关资源
      最近更新 更多