reduce 方法

E reduce(
  1. E combine(
    1. E value,
    2. E element
    )
)
继承

通过迭代使用提供的函数结合集合中的元素,将集合缩减为单个值。

可迭代对象必须至少有一个元素。如果只有一个元素,则返回该元素。

否则,此方法从迭代器的第一个元素开始,然后按照迭代顺序将其与剩余的元素结合,就像这样

E value = iterable.first;
iterable.skip(1).forEach((element) {
  value = combine(value, element);
});
return value;

计算可迭代对象总和的示例

final numbers = <double>[10, 2, 5, 0.5];
final result = numbers.reduce((value, element) => value + element);
print(result); // 17.5

如果可迭代对象可能为空,请考虑使用 fold

实现

E reduce(E combine(E value, E element)) {
  int length = this.length;
  if (length == 0) throw IterableElementError.noElement();
  E value = elementAt(0);
  for (int i = 1; i < length; i++) {
    value = combine(value, elementAt(i));
    if (length != this.length) {
      throw ConcurrentModificationError(this);
    }
  }
  return value;
}