| Index: sdk/lib/core/iterable.dart
|
| diff --git a/sdk/lib/core/iterable.dart b/sdk/lib/core/iterable.dart
|
| index dceed11be1502dd50354a70b2bd539b99d97c091..d1583dc2b745bfa9a647d2be0e62c681ca268458 100644
|
| --- a/sdk/lib/core/iterable.dart
|
| +++ b/sdk/lib/core/iterable.dart
|
| @@ -93,22 +93,24 @@ abstract class Iterable<E> {
|
| }
|
|
|
| /**
|
| - * Reduce a collection to a single value by iteratively combining each element
|
| - * of the collection with an existing value using the provided function.
|
| - * Use [initialValue] as the initial value, and the function [combine] to
|
| - * create a new value from the previous one and an element.
|
| + * Reduce a collection to a single value by iteratively combining elements
|
| + * of the collection using the provided function.
|
| *
|
| * Example of calculating the sum of an iterable:
|
| *
|
| - * iterable.reduce((prev, element) => prev + element);
|
| + * iterable.reduce((value, element) => value + element);
|
| *
|
| - * *UPCOMING API-CHANGE*: this method will soon be changed to not take
|
| - * an initial value: `iterable.reduce(min)`. Use [fold] instead.
|
| */
|
| - @deprecated
|
| - dynamic reduce(var initialValue,
|
| - dynamic combine(var previousValue, E element)) {
|
| - return fold(initialValue, combine);
|
| + E reduce(E combine(E value, E element)) {
|
| + Iterator<E> iterator = this.iterator;
|
| + if (!iterator.moveNext()) {
|
| + throw new StateError("No elements");
|
| + }
|
| + E value = iterator.current;
|
| + while (iterator.moveNext()) {
|
| + value = combine(value, iterator.current);
|
| + }
|
| + return value;
|
| }
|
|
|
| /**
|
| @@ -119,7 +121,8 @@ abstract class Iterable<E> {
|
| *
|
| * Example of calculating the sum of an iterable:
|
| *
|
| - * iterable.fold(0, (prev, element) => prev + element);
|
| + * iterable.fold(0, (prev, element) => prev + element);
|
| + *
|
| */
|
| dynamic fold(var initialValue,
|
| dynamic combine(var previousValue, E element)) {
|
| @@ -183,58 +186,6 @@ abstract class Iterable<E> {
|
| }
|
|
|
| /**
|
| - * Find the least element in the iterable.
|
| - *
|
| - * Returns null if the iterable is empty.
|
| - * Otherwise returns an element [:x:] of this [Iterable] so that
|
| - * [:x:] is not greater than [:y:] (that is, [:compare(x, y) <= 0:]) for all
|
| - * other elements [:y:] in the iterable.
|
| - *
|
| - * The [compare] function must be a proper [Comparator<T>]. If a function is
|
| - * not provided, [compare] defaults to [Comparable.compare].
|
| - *
|
| - * *Deprecated*. Use [reduce] with a binary min method if needed.
|
| - */
|
| - @deprecated
|
| - E min([int compare(E a, E b)]) {
|
| - if (compare == null) compare = Comparable.compare;
|
| - Iterator it = iterator;
|
| - if (!it.moveNext()) return null;
|
| - E min = it.current;
|
| - while (it.moveNext()) {
|
| - E current = it.current;
|
| - if (compare(min, current) > 0) min = current;
|
| - }
|
| - return min;
|
| - }
|
| -
|
| - /**
|
| - * Find the largest element in the iterable.
|
| - *
|
| - * Returns null if the iterable is empty.
|
| - * Otherwise returns an element [:x:] of this [Iterable] so that
|
| - * [:x:] is not smaller than [:y:] (that is, [:compare(x, y) >= 0:]) for all
|
| - * other elements [:y:] in the iterable.
|
| - *
|
| - * The [compare] function must be a proper [Comparator<T>]. If a function is
|
| - * not provided, [compare] defaults to [Comparable.compare].
|
| - *
|
| - * *Deprecated*. Use [reduce] with a binary max method if needed.
|
| - */
|
| - @deprecated
|
| - E max([int compare(E a, E b)]) {
|
| - if (compare == null) compare = Comparable.compare;
|
| - Iterator it = iterator;
|
| - if (!it.moveNext()) return null;
|
| - E max = it.current;
|
| - while (it.moveNext()) {
|
| - E current = it.current;
|
| - if (compare(max, current) < 0) max = current;
|
| - }
|
| - return max;
|
| - }
|
| -
|
| - /**
|
| * Returns true if there is no element in this collection.
|
| */
|
| bool get isEmpty => !iterator.moveNext();
|
|
|