列表的折叠和折叠[右/左]方法的签名的差异

时间:2017-09-02 15:14:09

标签: scala scala-collections

我一直在想,为什么foldfold[Left|Right]的签名不同(当然除了名称。

1 个答案:

答案 0 :(得分:3)

微妙且非常重要的区别

fold可以并行执行,因为可以传递种子元素 任意数量的工人。

换句话说,下一次调用不依赖于最后一次调用

另一方面,foldLeftfoldRight必须顺序执行,因为B参数可用于第二个元素,必须首先计算序列的第一个元素

不太重要且更明显的区别:

注意seed的{​​{1}}参数必须与集合中元素的类型相匹配。 foldfoldLeft没有此限制,他们将始终返回类型等于所用种子类型的元素。