有什么区别 折 和 减少 在达特什么时候我会使用一个而不是另一个?他们似乎根据文档做同样的事情。
通过迭代组合每个集合将集合减少到单个值 使用提供的具有现有值的集合的元素 功能。
有什么区别 折 和 减少 在达特什么时候我会使用一个而不是另一个?他们似乎根据文档做同样的事情。
通过迭代组合每个集合将集合减少到单个值 使用提供的具有现有值的集合的元素 功能。
减少 只能用于非空集合,其函数返回与集合中包含的类型相同的类型。
折 可以在所有情况下使用。
例如,您无法计算列表中所有字符串长度的总和 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)
。