为什么我看到两个结果?

时间:2015-11-02 18:03:50

标签: elixir iex

我正在通过Sasa Juric的“Elixir In Action”工作,我发现了一些令我感到困惑的事情。我正在研究他在第140页左右给出的例子,我看到了这个:

iex(2)> send(self, {:message, 1})    # Line 1
{:message, 1}
iex(3)> receive_result = receive do
...(3)>   {:message, x} -> x + 2
...(3)> end
3
iex(4)> IO.inspect receive_result
3
3

为什么IO.inspect打印两次值?它是否与第1行的发送消息立即显示元组有关?

1 个答案:

答案 0 :(得分:4)

这就是IO.inspect/2在iex中的工作原理:

iex(10)> IO.inspect(3)
3 # From IO.inspect
3 # return value in iex

由于IO.inspect打印该值并返回相同的值,因此会发生这种情况。 IO.puts/2打印该值并返回:ok

iex(11)> IO.puts(3)  
3    # From IO.puts
:ok  # return value in iex
相关问题