我一直想知道,为什么有 fold 的签名和 fold[Left|Right]是不同的(当然除了名称。
最佳答案
微妙且非常重要的区别
fold
可以并行执行,因为可以传递种子元素
给任意数量的 worker 。
换句话说,下一次调用不依赖于上一次调用
另一方面,foldLeft
和 foldRight
必须按顺序执行,因为要使 B
参数可用于第二个元素,它必须首先执行计算序列的第一个元素。
不太重要但更明显的区别:
请注意,fold
的 seed
参数必须与集合中元素的类型匹配。 foldLeft
和 foldRight
没有这个限制,它们将始终返回一个类型等于所使用的种子类型的元素。
关于scala - 列表的 Fold 和 Fold[Right/Left] 方法的签名差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46015204/