为什么我的接收方法停止了我的 iex?
Why my receive method is stopping my iex?
我在 iex 终端上写了以下代码,之后它不再响应,终端就停止了,就像它在期待其他东西一样。到底发生了什么?
receive do
{:hello, msg} -> msg
{:world, msg} -> "won't match"
end
receive
默认情况下没有超时,因此进程将被阻塞,直到当前进程收到匹配任何模式的消息。如果您只是玩玩,可以使用 after
设置超时以确保不会发生这种情况:
receive do
{:hello, msg} -> msg
...
after 5000 -> :timeout
end
如果在 5000 毫秒内没有收到与模式匹配的消息,表达式现在将 return :timeout
.
我在 iex 终端上写了以下代码,之后它不再响应,终端就停止了,就像它在期待其他东西一样。到底发生了什么?
receive do
{:hello, msg} -> msg
{:world, msg} -> "won't match"
end
receive
默认情况下没有超时,因此进程将被阻塞,直到当前进程收到匹配任何模式的消息。如果您只是玩玩,可以使用 after
设置超时以确保不会发生这种情况:
receive do
{:hello, msg} -> msg
...
after 5000 -> :timeout
end
如果在 5000 毫秒内没有收到与模式匹配的消息,表达式现在将 return :timeout
.