Dart中 fold 和 reduce 有什么区别?我什么时候使用一个相对于另一个?根据文档,他们似乎做同样的事情。
最佳答案
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)
的快捷方式。