0

过去一周我一直在学习 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: ')
4

1 回答 1

2

您必须编写以下内容

anatom:start(myatom, fun tloop:loop/0).

您必须指定函数的arity(参数数量),因为在具有相同名称但不同arity的erlang函数中不被认为是同一个函数。

于 2013-07-23T09:50:27.210 回答