【问题标题】:The function name conflicts with the function in the Kernel module. Is there a way to call its own function first?函数名与内核模块中的函数冲突。有没有办法先调用自己的函数?
【发布时间】:2018-06-25 14:11:43
【问题描述】:

例如,div/2Kernel 模块中的现有函数。我想调用我自己的 div/2 函数而不是 Kernel.div/2 函数。

【问题讨论】:

  • 你可以这样做,但我会考虑很长时间才能将我的函数命名为与内核函数相同的名称。您可能会为以后维护您的代码的人增加很多维护麻烦(甚至可能是您在六个月内)。尤其是当很容易命名一个函数 udiv(用于用户定义的除法)或明确表明它不是内核函数的东西时。

标签: erlang elixir


【解决方案1】:

您可以通过显式导入 Kernel 并使用 except 选项排除您不想要的函数来取消导入 Kernel 中的函数:

defmodule A do
  import Kernel, except: [div: 2]

  def div(a, b), do: a * b

  def do_div, do: div(3, 4)
end

IO.inspect A.do_div()

输出:

12

【讨论】:

    【解决方案2】:

    您也可以调用 <module-name>.div/2 来自你的<module-name>

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      相关资源
      最近更新 更多