| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * The [Iterable] interface allows to get an [Iterator] out of an | 6 * The [Iterable] interface allows to get an [Iterator] out of an |
| 7 * [Iterable] object. | 7 * [Iterable] object. |
| 8 * | 8 * |
| 9 * This interface is used by the for-in construct to iterate over an | 9 * This interface is used by the for-in construct to iterate over an |
| 10 * [Iterable] object. | 10 * [Iterable] object. |
| 11 * The for-in construct takes an [Iterable] object at the right-hand | 11 * The for-in construct takes an [Iterable] object at the right-hand |
| 12 * side, and calls its [iterator] method to get an [Iterator] on it. | 12 * side, and calls its [iterator] method to get an [Iterator] on it. |
| 13 * | 13 * |
| 14 * A user-defined class that implements the [Iterable] interface can | 14 * A user-defined class that implements the [Iterable] interface can |
| 15 * be used as the right-hand side of a for-in construct. | 15 * be used as the right-hand side of a for-in construct. |
| 16 */ | 16 */ |
| 17 abstract class Iterable<E> { | 17 abstract class Iterable<E> { |
| 18 const Iterable(); | 18 const Iterable(); |
| 19 | 19 |
| 20 /** | 20 /** |
| 21 * Returns an [Iterator] that iterates over this [Iterable] object. | 21 * Returns an [Iterator] that iterates over this [Iterable] object. |
| 22 */ | 22 */ |
| 23 Iterator<E> iterator(); | 23 Iterator<E> get iterator; |
| 24 | 24 |
| 25 /** | 25 /** |
| 26 * Returns a new collection with the elements [: f(e) :] | 26 * Returns a new collection with the elements [: f(e) :] |
| 27 * for each element [:e:] of this collection. | 27 * for each element [:e:] of this collection. |
| 28 * | 28 * |
| 29 * Subclasses of [Collection] should implement the [mappedBy] method | 29 * Subclasses of [Collection] should implement the [mappedBy] method |
| 30 * to return a collection of the same general type as themselves. | 30 * to return a collection of the same general type as themselves. |
| 31 * E.g., [List.mappedBy] should return a [List]. | 31 * E.g., [List.mappedBy] should return a [List]. |
| 32 */ | 32 */ |
| 33 Collection mappedBy(f(E element)) { | 33 Collection mappedBy(f(E element)) { |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 bool some(bool f(E element)) { | 108 bool some(bool f(E element)) { |
| 109 for (E element in this) { | 109 for (E element in this) { |
| 110 if (f(element)) return true; | 110 if (f(element)) return true; |
| 111 } | 111 } |
| 112 return false; | 112 return false; |
| 113 } | 113 } |
| 114 | 114 |
| 115 /** | 115 /** |
| 116 * Returns true if there is no element in this collection. | 116 * Returns true if there is no element in this collection. |
| 117 */ | 117 */ |
| 118 bool get isEmpty => !iterator().hasNext; | 118 bool get isEmpty => !iterator.moveNext(); |
| 119 } | 119 } |
| OLD | NEW |