有关更多信息Erlang中的产卵功能

时间:2012-07-02 12:23:43

标签: erlang

我经常看到人们使用arity 0(无参数)生成新函数:

 spawn_link(fun function_name/0).

其中function_name / 0可以是例如:

function_name() -> 
                   io:format("hello~n", []) 
end.

我能以类似的方式产生一个带参数的函数吗?例如:

function_name(Arg) ->
                   io:format("hello ~p ~n", [Arg])
end.

我应该使用

spawn_link(Module, Function, Arg)

或其他什么?

1 个答案:

答案 0 :(得分:6)

您可以将spawn_link与参数一起使用,使用指定的参数构建lambda函数(fun)或仅使用固定的参数。例如,您可以使用,如您所说:

spawn_link(Module, Function, Args).

或在您的模块中导出您自己的spawn_link(或start):

spawn_link(Args) ->
    spawn_link(?MODULE, fun myfun/X, Args).

或使用fun

spawn_link(Args) ->
    spawn_link(fun () -> apply(fun myfun/X, Args) end).

或者如果您在内部使用固定参数调用某个函数:

spawn_link() ->
    spawn_link(fun () -> myfun(1,2,3) end).

其中X在这种情况下是每种情况下myfun函数的arity。