【发布时间】:2011-08-09 17:18:32
【问题描述】:
我正在查看为 immutable.Set 定义折叠的方式:
def fold [A1 >: A] (z: A1)(op: (A1, A1) ⇒ A1): A1
然而 foldLeft 被定义为:
def foldLeft [B] (z: B)(op: (B, A) ⇒ B): B
这对我来说看起来很奇怪,至少乍一看,因为我希望 fold 能够更改它返回的集合的类型,就像 foldLeft 一样。
我想这是因为 foldLeft 和 foldRight 保证了元素折叠的顺序。 fold 给的保证是什么?
【问题讨论】:
-
让-菲利普的回答对您有帮助吗?见stackoverflow.com/questions/6253978/…
-
在某种程度上,我猜。我还没有看到 fold 会在集合 API 中返回与 foldLeft 不同的结果的情况,但我想可能存在一些需要这种区别的实现。感谢您的链接。
标签: api scala fold higher-order-functions