reduce 方法
- E combine(
- E value,
- 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)) {
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;
}