Dart Fold vs Reduce

时间:2013-12-10 10:20:56

标签: dart

Dart中弃号降低之间的区别是什么?我何时使用一个而不是另一个?根据文档,他们似乎做了同样的事情。

  

通过迭代组合每个集合将集合减少到单个值   使用提供的具有现有值的集合的元素   功能

1 个答案:

答案 0 :(得分:22)

reduce只能用于非空集合,其函数返回与集合中包含的类型相同的类型。

fold可用于所有情况。

例如,您无法使用reduce计算列表中所有字符串的长度总和。您必须使用fold

final list = ['a', 'bb', 'ccc'];
// compute the sum of all length
list.fold(0, (t, e) => t + e.length); // result is 6

顺便说一下list.reduce(f)可以看作list.skip(1).fold(list.first, f)的快捷方式。