【发布时间】:2020-05-08 13:39:35
【问题描述】:
我目前正在学习 Elixir 并完成“Programming Elixir 1.6”一书中的所有练习。 由于练习本身非常简单,我很难理解有关输出的一些内容。
在第 5 章末尾,我被要求使用匿名函数重写这些行:
Enum.map [1, 2, 3, 4], fn x -> x + 2 end
Enum.each([1, 2, 3, 4], fn x -> IO.inspect x end
所以我写了这个:
Enum.map([1, 2, 3, 4], &(&1 + 2))
Enum.each([1, 2, 3, 4], &IO.inspect/1)
但运行此之后,我的输出仅来自检查:
λ elixir functions-5.exs
1
2
3
4
所以我在这里添加了一些IO.puts:
IO.puts Enum.map([1, 2, 3, 4], &(&1 + 2))
IO.puts Enum.each([1, 2, 3, 4], &IO.inspect/1)
而且输出真的很奇怪,至少可以这么说:
λ elixir functions-5.exs
╚╝║═
1
2
3
4
ok
在尝试了一些替代语法并在调用之间使用变量之后,我尝试将这些行直接执行到 Interactive Elixir 中:
iex(2)> Enum.map([1, 2, 3, 4], &(&1 + 2))
[3, 4, 5, 6]
这样可以正常工作!为什么?
iex(1)> IO.puts Enum.map([1, 2, 3, 4], &(&1 + 2))
╚╝║═
:ok
IO.puts 似乎又破坏了格式,为什么又是?
我错过了什么?为什么不同的执行上下文没有相同的输出?
总结我的整体问题:威士忌探戈狐步舞???
【问题讨论】: