关于erlang中回调函数的问题
今天在使用lists:map函数时遇到一个问题,传递给map的回调函数,只能使用fun定义的临时函数,否则erlang将报错。
测试代码如下:
%%test.erl-module(test).-export([test/0, test2/0, test3/0]).f1(X)-> X+1.test() -> _List = lists:map(f1, [1,2,3,4]).test2()-> F = fun(X) -> X+1 end, _List = lists:map(F, [1,2,3,4]).test3()-> List = [1,2,3,4], _List = [f1(X) || X <- List].
从执行结果中看到,传递的回调函数为外部函数时,运行时将报"bad function"的错误。可能是我的用法不对,现在的解决办法是使用列表解析,如test3/0函数所示的那样。
那么到底使用外部的函数作为回调函数呢?