gpt4 book ai didi

scala - scala 中 foldright 和 foldleft 的参数顺序

转载 作者:行者123 更新时间:2023-12-04 17:25:45 25 4
gpt4 key购买 nike

为什么foldLeft

f: (B, A) => B

并折叠右取
f: (A, B) => B
foldLeft本来可以写成 f: (A, B) => B.我试图理解参数顺序差异的原因。

最佳答案

它应该向您展示聚合的方向。 FoldLeft 从左到右聚合,因此您可以将累加器 B 想象为在靠近每个 A 时在左侧堆积东西:

如果你有类似的东西:

Vector(1,2,3,4,5).foldLeft(0)((b,a) => b + a)

然后你会得到这种行为
 B    ...As...
---------------
(0), 1, 2, 3, 4, 5
(0+1), 2, 3, 4, 5
(0+1+2), 3, 4, 5
(0+1+2+3), 4, 5
(0+1+2+3+4), 5
(0+1+2+3+4+5)

另一方面,FoldRight 从右侧聚合事物。所以如果你有类似的东西:
Vector(1,2,3,4,5).foldRight(0)((a,b) => a + b)

然后你会得到这种行为
  ...As...     B
-----------------
1, 2, 3, 4, 5 (0)
1, 2, 3, 4, (5+0)
1, 2, 3, (4+5+0)
1, 2, (3+4+5+0)
1, (2+3+4+5+0)
(1+2+3+4+5+0)

关于scala - scala 中 foldright 和 foldleft 的参数顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21472451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com