flush()如何输出收到的消息/

时间:2013-12-31 03:45:32

标签: erlang

flush()输出收到的消息。向您学习一些Erlang book显示flush()的以下代码。

flush() ->
    receive
        _ -> flush()
    after 0 ->
        ok
    end.

但它怎么可能输出一些东西,比如它似乎对它收到的消息没有任何作用。

8> flush().
Shell got {<0.51.0>,ok}
Shell got {<0.51.0>,{ok,bacon}}
Shell got {<0.51.0>,not_found}
ok

1 个答案:

答案 0 :(得分:1)

flush()是一个与flush()示例无关的VM命令,其目的是说明after 0的一种用法(当然两个代码都清空了消息队列)。我想VM中的flush代码如下:

flush() ->
    receive
        M -> 
            io:format("Shell got ~p~n",[M]),
            flush()
    after 0 ->
        ok
    end.