好的,所以我最近开始学习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: ','
我做错了什么?
答案 0 :(得分:6)
它开始的appears是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]).