我写了一个简单的map
函数(用于学习目的;我了解Enum.map):
defmodule MyList do
def add_1([]), do: []
def add_1([head | tail]), do: [ head + 1 | add_1(tail)]
def map([], _mapFn), do: []
def map([head | tail], mapFn), do: [ mapFn.(head) | map(tail, mapFn) ]
end
我可以在iex中轻松使用它:
MyList.map [1,2,3], &(&1 + 1)
而且,我正在使用匿名函数,所以没有惊喜。
如何使用模块本身的功能调用它?
iex(1)> MyList.map [1,2,3,4], MyList.add_1
** (UndefinedFunctionError) function MyList.add_1/0 is undefined or private. Did you mean one of:
* add_1/1
MyList.add_1()
我的意思是,毕竟这不是匿名的。
答案 0 :(得分:0)
你需要在它前面放一个&
,所以它传递了函数而不是试图调用它。
MyList.map [1,2,3,4], &MyList.add_1/1
注意{qualified}函数名前面的&
和它后面的arity声明。