寻找Erlang代码书的解释

时间:2013-06-02 14:48:12

标签: erlang

有人可以逐行解释这个吗?

非常感谢。

run() ->
        Pid = spawn(fun ping/0),
        Pid ! self(),
        receive
                pong -> ok
        end.
ping() ->
        receive
                From -> From ! pong
        end.

1 个答案:

答案 0 :(得分:6)

逐行:

run() -> 

声明函数run/0

    Pid = spawn(fun ping/0),

使用初始化函数ping/0生成新进程并将其pid存储到变量Pid

    Pid ! self(),

将包含当前流程的pid的消息(self/0调用的结果)发送到pid存储在变量Pid

中的流程
    receive

等待消息(如果有子句,则等待时间)

        pong -> ok

如果收到消息pong,则返回值ok

    end.

receive子句的结尾和点也表示函数run/0

结束
ping() -> 

声明函数ping/0

    receive 

等待留言......

        From -> From ! pong

接收任何内容时,将其存储在变量From中,然后将消息pong发送到由From中的值确定的进程(进程执行的pid { {1}}在这种情况下的功能)

run/0

接收结束以及 end. 功能