我有一个写入记事本的模块:
-module(hhfuns).
-compile(export_all).
one() -> 1.
two() -> 2.
add(X,Y) - X() + Y().
我把它保存为hhfuns.erl。当我运行Ok时,我打电话给:
hhfuns:add(myfun hhfun:one/0, myfun hhfun:two/0).
此命令使语法错误。但当我将 myfun 更改为 fun 时,它起作用了。可能是基本语法,但我是Erlang的新手,所以请为我解释原因。
答案 0 :(得分:2)
当您从外部模块传递函数作为参数时,您应该使用语法fun Module:Function/Arity
。正确版本为hhfuns:add(fun hhfun:one/0, fun hhfun:two/0)
。 fun
这里是必填关键字,您不能在此使用myfun
。
答案 1 :(得分:0)
实际上myfun
不是Erlang关键字,而fun
是。