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)
的快捷方式。