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

10-05 20:59
查看更多