如何将一个函数传递给elixir中同一模块中的另一个函数?
在 python 中,我们可以将一个函数传递给另一个函数,如下面的示例代码。
def digits(n):
return list(map(int, str(n)))
def digit_cube(n):
return list(map(lambda x: x ** 3, digits(n)))
可以在 elixir 中做同样的事情吗?如果是,如何?
回答
可以传递匿名函数
f = fn e -> e * 2 end
Enum.map([1, 2, 3], f)
或捕获现有功能 &/1
defmodule M do
def dbl(e), do: e * 2
def map_dbl(list) do
Enum.map(list, &dbl/1)
end
end