【问题标题】:Why my receive method is stopping my iex?为什么我的接收方法正在停止我的 iex?
【发布时间】:2018-07-29 18:50:34
【问题描述】:

我在 iex 终端上编写了以下代码,之后它不再响应,终端就停止了,就像它在期待别的东西一样。究竟发生了什么?

receive do 
    {:hello, msg} -> msg          
    {:world, msg} -> "won't match" 
end

【问题讨论】:

    标签: elixir elixir-iex


    【解决方案1】:

    receive 默认情况下没有超时,因此进程将被阻塞,直到当前进程接收到与任何模式匹配的消息。如果您只是玩玩,可以使用after 设置超时以确保不会发生这种情况:

    receive do
      {:hello, msg} -> msg
      ...
    after 5000 -> :timeout
    end
    

    如果在 5000 毫秒内没有收到与该模式匹配的消息,则表达式现在将返回 :timeout

    【讨论】:

    • 如此不可思议的事情!谢谢! +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    相关资源
    最近更新 更多