我正在通过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行的发送消息立即显示元组有关?
答案 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