1

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

4

1 回答 1

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
于 2015-11-02T18:05:58.700 回答