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 part of dart.core; | 5 part of dart.core; |
6 | 6 |
7 /** | 7 /** |
8 * The [Iterable] interface allows to get an [Iterator] out of an | 8 * The [Iterable] interface allows to get an [Iterator] out of an |
9 * [Iterable] object. | 9 * [Iterable] object. |
10 * | 10 * |
11 * This interface is used by the for-in construct to iterate over an | 11 * This interface is used by the for-in construct to iterate over an |
12 * [Iterable] object. | 12 * [Iterable] object. |
13 * The for-in construct takes an [Iterable] object at the right-hand | 13 * The for-in construct takes an [Iterable] object at the right-hand |
14 * side, and calls its [iterator] method to get an [Iterator] on it. | 14 * side, and calls its [iterator] method to get an [Iterator] on it. |
15 * | 15 * |
16 * A user-defined class that implements the [Iterable] interface can | 16 * A user-defined class that implements the [Iterable] interface can |
17 * be used as the right-hand side of a for-in construct. | 17 * be used as the right-hand side of a for-in construct. |
18 */ | 18 */ |
19 abstract class Iterable<E> { | 19 abstract class Iterable<E> { |
20 const Iterable(); | 20 const Iterable(); |
21 | 21 |
22 /** | 22 /** |
23 * Create an [Iterable] that generates its elements dynamically. | 23 * Create an [Iterable] that generates its elements dynamically. |
24 * | 24 * |
25 * The [Iterators] created by the [Iterable] will count from | 25 * The [Iterators] created by the [Iterable] will count from |
26 * zero to [:count - 1:] while iterating, and call [generator] | 26 * zero to [:count - 1:] while iterating, and call [generator] |
27 * with that index to create the next value. | 27 * with that index to create the next value. |
28 * | 28 * |
29 * As an [Iterable], [:new Iterable.generate(n, generator)):] is equivalent to | 29 * As an [Iterable], [:new Iterable.generate(n, generator)):] is equivalent to |
30 * [:const [0, ..., n - 1].mappedBy(generator):] | 30 * [:const [0, ..., n - 1].map(generator):] |
31 */ | 31 */ |
32 factory Iterable.generate(int count, E generator(int index)) { | 32 factory Iterable.generate(int count, E generator(int index)) { |
33 return new _GeneratorIterable<E>(count, generator); | 33 return new _GeneratorIterable<E>(count, generator); |
34 } | 34 } |
35 | 35 |
36 /** | 36 /** |
37 * Returns an [Iterator] that iterates over this [Iterable] object. | 37 * Returns an [Iterator] that iterates over this [Iterable] object. |
38 */ | 38 */ |
39 Iterator<E> get iterator; | 39 Iterator<E> get iterator; |
40 | 40 |
41 /** | 41 /** |
42 * Returns a lazy [Iterable] where each element [:e:] of [this] is replaced | 42 * Returns a lazy [Iterable] where each element [:e:] of [this] is replaced |
43 * by the result of [:f(e):]. | 43 * by the result of [:f(e):]. |
44 * | 44 * |
45 * This method returns a view of the mapped elements. As long as the | 45 * This method returns a view of the mapped elements. As long as the |
46 * returned [Iterable] is not iterated over, the supplied function [f] will | 46 * returned [Iterable] is not iterated over, the supplied function [f] will |
47 * not be invoked. The transformed elements will not be cached. Iterating | 47 * not be invoked. The transformed elements will not be cached. Iterating |
48 * multiple times over the the returned [Iterable] will invoke the supplied | 48 * multiple times over the the returned [Iterable] will invoke the supplied |
49 * function [f] multiple times on the same element. | 49 * function [f] multiple times on the same element. |
50 */ | 50 */ |
51 Iterable mappedBy(f(E element)) => new MappedIterable<E, dynamic>(this, f); | 51 Iterable map(f(E element)) => new MappedIterable<E, dynamic>(this, f); |
| 52 |
| 53 /** |
| 54 * Deprecated alias for [map]. |
| 55 * |
| 56 * @deprecated |
| 57 */ |
| 58 Iterable mappedBy(f(E element)) => map(f); |
52 | 59 |
53 /** | 60 /** |
54 * Returns a lazy [Iterable] with all elements that satisfy the | 61 * Returns a lazy [Iterable] with all elements that satisfy the |
55 * predicate [f]. | 62 * predicate [f]. |
56 * | 63 * |
57 * This method returns a view of the mapped elements. As long as the | 64 * This method returns a view of the mapped elements. As long as the |
58 * returned [Iterable] is not iterated over, the supplied function [f] will | 65 * returned [Iterable] is not iterated over, the supplied function [f] will |
59 * not be invoked. Iterating will not cache results, and thus iterating | 66 * not be invoked. Iterating will not cache results, and thus iterating |
60 * multiple times over the the returned [Iterable] will invoke the supplied | 67 * multiple times over the the returned [Iterable] will invoke the supplied |
61 * function [f] multiple times on the same element. | 68 * function [f] multiple times on the same element. |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 _index++; | 413 _index++; |
407 return true; | 414 return true; |
408 } else { | 415 } else { |
409 _current = null; | 416 _current = null; |
410 return false; | 417 return false; |
411 } | 418 } |
412 } | 419 } |
413 | 420 |
414 E get current => _current; | 421 E get current => _current; |
415 } | 422 } |
OLD | NEW |