简体   繁体   中英

spawn function in erlang using function in another module

I have been learning erlang for the past week and am going through Joe Armstrong's Pragmatic erlang book . I was writing some code to spawn processes and have come across a situation I have a function in module myatom.erl which looks like this

 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. 

There is a function in another module named tloop.erl

loop() ->
   receive 
        { From , No } -> From ! { self(), No*4};
        Other -> void
   end. 

if I am to use start() to spawn loop in the erlang shell , how can I do it ? I get the following error when I do

anatom:start(atomname,tloop:loop). 

Thanks in advance !

anatom:start(myatom,fun tloop:loop). 
* 2: syntax error before: ')

You must write the following

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

You have to specify the arity (number of arguments) of the function, as in erlang functions with the same name but different arity are not considered to be the same function.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM