过去一周我一直在学习erlang,并且正在阅读Joe Armstrong的Pragmatic erlang书。我正在编写一些代码来生成进程并遇到了一种情况 我在模块myatom.erl中有一个函数,它看起来像这样
start(anatom,Fun) ->
case whereis(anatom) of
undefined ->
Pid = spawn(Fun),
try register(anatom,Pid) of
true -> true
catch
error:Reason ->
Reason
end;
Other -> {error,already_defined}
end.
另一个名为tloop.erl的模块中有一个函数
loop() ->
receive
{ From , No } -> From ! { self(), No*4};
Other -> void
end.
如果我使用start()在erlang shell中生成循环,我该怎么办? 我做
时出现以下错误anatom:start(atomname,tloop:loop).
提前致谢!
anatom:start(myatom,fun tloop:loop).
* 2: syntax error before: ')
答案 0 :(得分:2)
您必须编写以下内容
anatom:start(myatom, fun tloop:loop/0).
你必须指定函数的arity(参数个数),因为在具有相同名称但不同arity的erlang函数中不被认为是相同的函数。