Hyp*_*eus 13 erlang export spawn
我是erlang的新手,并且在以下情况下有点头疼:
拿这个代码:
-module (so).
-export ( [foo/0] ).
bar () ->
receive
die -> ok;
Msg -> io:format ("I say ~p.~n", [Msg] )
end.
bar (Name) ->
receive
die -> ok;
Msg -> io:format ("~s says ~p.~n", [Name, Msg] )
end.
foo () ->
Bar = spawn (fun bar/0),
Bar ! "Hello",
Bar ! die,
Baz = spawn (?MODULE, bar, ["Alice"] ), % bar/1 not exported
Baz ! "Hello",
Baz ! die.
Run Code Online (Sandbox Code Playgroud)
产生的过程spawn/1工作正常,但第二个过程产生了spawn/3失败,因为我没有导出bar/1,因此我得到了{undef,[{so,bar,["Alice"]}]}.两个带有参数列表的spawn函数(spawn/3和spawn/4)也采用模块名称.但我不想导出bar/1,因为它只在内部使用,从不需要从模块外部调用.
如何在不导出参数的情况下生成带参数的函数?
Dav*_*don 21
您可以将调用放在另一个内部,fun如下所示:
spawn(fun() -> bar("alice") end)
Run Code Online (Sandbox Code Playgroud)