使用另一个模块中的函数在erlang中生成函数

时间:2013-07-23 09:17:19

标签: erlang

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

1 个答案:

答案 0 :(得分:2)

您必须编写以下内容

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

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