我正在阅读 Elixir 文档,并且遇到了 Elixir List 模块的“foldr”函数。我真的很难理解它。这是医生所说的:
Folds (reduces) the given list from the right with a function. Requires an accumulator.
iex> List.foldr([1, 2, 3, 4], 0, fn(x, acc) -> x - acc end)
-2
所以这应该返回-2。但是当我读到它时,我似乎认为它每次都试图将一个数字减0,如果是这样的话我们如何得到-2?我显然不明白累加器,有人可以帮我分解它吗?
了解此类函数如何工作的最简单方法是坚持IO.puts使用所有参数进行调用。
iex(1)> List.foldr([1, 2, 3, 4], 0, fn(x, acc) -> IO.puts "#{x} - #{acc} = #{x - acc}"; x - acc end)
4 - 0 = 4
3 - 4 = -1
2 - -1 = 3
1 - 3 = -2
-2
因此,在第一次迭代中,x是 4 且acc是 0,我们得到x - acc = 4 - 0 = 4。最后我们得到了-2.
| 归档时间: | 
 | 
| 查看次数: | 2741 次 | 
| 最近记录: |