erlang 函数名与内核模块中的函数冲突,有没有办法先调用它自己的函数?

a0zr77ik  于 2023-01-18  发布在  Erlang
关注(0)|答案(3)|浏览(185)

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

sqserrrh

sqserrrh1#

您可以取消导入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
nhjlsmyf

nhjlsmyf2#

您也可以从<module-name>内部调用<module-name>.div/2

lztngnrs

lztngnrs3#

除了取消导入函数之外,您还可以在调用函数时显式引用自己的模块

defmodule MyModule do
    def div(a, b) do
        a * b
    end 

    def do_div do
        __MODULE__.div(3, 4)
    end
end

相关问题