2

好的,所以我最近开始学习 erlang,但对它不断返回的错误感到困惑。我做了很多更改,但我不断收到错误。据我所知,语法是正确的,但很明显我做错了什么。看一看...

-module(pidprint).
-export([start/0]).

dostuff([]) ->
    receive
        begin ->
     io:format("~p~n", [This is a Success])
 end.

sender([N]) ->
    N ! begin,
    io:format("~p~n", [N]).


start() ->
    StuffPid = spawn(pidprint, dostuff, []),
    spawn(pidprint, sender, [StuffPid]).

基本上我想编译脚本,调用 start,生成“dostuff”进程,将其进程标识符传递给“sender”进程,然后将其打印出来。最后,我想使用最初在生成它时传递给 sender 的进程标识符将原子“begin”发送到“dostuff”进程。

c()当我尝试使用编译脚本时,我不断出现错误。他们来了..

./pidprint.erl:6: syntax error before: '->'
./pidprint.erl:11: syntax error before: ','

我究竟做错了什么?

4

1 回答 1

7

看来begin 是 Erlang 中的保留字使用其他原子或在其周围加上单引号:'begin'。

此外,您忘记了“这是成功的”周围的双引号。

我修复了其他几个错误...

-module(pidprint).
-export([start/0, dostuff/0, sender/1]).

dostuff() -> 
   receive 
      'begin' ->
         io:format("~p~n", ["This is a Success"])
   end.

sender(N) -> 
   N ! 'begin',
   io:format("~p~n", [N]).

start() -> 
   StuffPid = spawn(pidprint, dostuff, []), 
   spawn(pidprint, sender, [StuffPid]).
于 2010-06-17T05:06:03.690 回答