Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 我如何调用Enum.map内的模块函数而不获得一个";“未定义引用”;错误?_Elixir - Fatal编程技术网

Elixir 我如何调用Enum.map内的模块函数而不获得一个";“未定义引用”;错误?

Elixir 我如何调用Enum.map内的模块函数而不获得一个";“未定义引用”;错误?,elixir,Elixir,我有一个简单的模块,其中包含一个函数: defmodule Funcs do def double(x) do x*2 end end 当我以文件名作为参数启动iex时,我可以很好地调用函数: iex(5)> Funcs.double(3) 6 但是当我尝试在Enum.map中使用它时,我得到一个未定义的函数错误: iex(2)> Enum.map([1,2,3,4], Funcs.double) ** (UndefinedFunctionError) und

我有一个简单的模块,其中包含一个函数:

defmodule Funcs do

  def double(x) do
    x*2
  end

end
当我以文件名作为参数启动iex时,我可以很好地调用函数:

iex(5)> Funcs.double(3)
6
但是当我尝试在
Enum.map
中使用它时,我得到一个
未定义的函数
错误:

iex(2)> Enum.map([1,2,3,4], Funcs.double)
** (UndefinedFunctionError) undefined function: Funcs.double/0
    Funcs.double()
然而,如果我只是使用一个类似的匿名函数,那么一切都会按预期工作:

iex(6)> Enum.map([1,2,3,4], fn(x) -> x*2; end)
[2, 4, 6, 8]

如何使用模块函数(不确定这是否是正确的术语)作为Enum.map的参数?

捕获非匿名函数的语法使用
&function/arity

在您的示例中:

Enum.map([1,2,3,4], &Funcs.double/1)

您可以在中阅读更多有关捕获语法(在Elixir中非常常见)的信息。

我在我的答案中添加了一个指向
&
特殊表单文档的链接,很抱歉我之前没有添加,但我在手机上。太好了,非常感谢。