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」プロセスに渡し、それを出力します。最後に、生成時に最初に送信者に渡されたプロセス識別子を使用して、アトム「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 に答える