метод reduce
- E combine(
- E previousValue,
- E element
override
Сводит коллекцию к одному значению, последовательно объединяя её элементы с помощью указанной функции.
Итерируемая последовательность должна содержать как минимум один элемент. Если она содержит только один элемент, возвращается этот элемент.
В противном случае этот метод начинает с первого элемента итератора, а затем объединяет его с оставшимися элементами в порядке итерации, как если бы выполнялся код:
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 previousValue, E element)) {
int length = this.length;
if (length == 0) throw IterableElementError.noElement();
E value = this[0];
for (int i = 1; i < length; i++) {
value = combine(value, this[i]);
if (length != this.length) {
throw ConcurrentModificationError(this);
}
}
return value;
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-collection/ListMixin/reduce.html