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

实现

E reduce(E combine(E value, E element)) {
  Iterator<E> iterator = this.iterator;
  if (!iterator.moveNext()) {
    throw IterableElementError.noElement();
  }
  E value = iterator.current;
  while (iterator.moveNext()) {
    value = combine(value, iterator.current);
  }
  return value;
}