Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Side by Side Diff: sdk/lib/async/stream.dart

Issue 13548002: Add Iterable.fold (and Stream.fold) which replace `reduce`. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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.async; 5 part of dart.async;
6 6
7 // ------------------------------------------------------------------- 7 // -------------------------------------------------------------------
8 // Core Stream types 8 // Core Stream types
9 // ------------------------------------------------------------------- 9 // -------------------------------------------------------------------
10 10
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 242
243 /** 243 /**
244 * Chains this stream as the input of the provided [StreamTransformer]. 244 * Chains this stream as the input of the provided [StreamTransformer].
245 * 245 *
246 * Returns the result of [:streamTransformer.bind:] itself. 246 * Returns the result of [:streamTransformer.bind:] itself.
247 */ 247 */
248 Stream transform(StreamTransformer<T, dynamic> streamTransformer) { 248 Stream transform(StreamTransformer<T, dynamic> streamTransformer) {
249 return streamTransformer.bind(this); 249 return streamTransformer.bind(this);
250 } 250 }
251 251
252 /**
253 * Reduces a sequence of values by repeatedly applying [combine].
254 *
255 * *WARNING UPCOMING API-CHANGE*: This method will be changed so that
256 * it doesn't take an initial value. Use [fold] instead.
257 */
258 Future reduce(var initialValue, combine(var previous, T element)) {
259 return fold(initialValue, combine);
260 }
261
252 /** Reduces a sequence of values by repeatedly applying [combine]. */ 262 /** Reduces a sequence of values by repeatedly applying [combine]. */
253 Future reduce(var initialValue, combine(var previous, T element)) { 263 Future fold(var initialValue, combine(var previous, T element)) {
254 _FutureImpl result = new _FutureImpl(); 264 _FutureImpl result = new _FutureImpl();
255 var value = initialValue; 265 var value = initialValue;
256 StreamSubscription subscription; 266 StreamSubscription subscription;
257 subscription = this.listen( 267 subscription = this.listen(
258 // TODO(ahe): Restore type when feature is implemented in dart2js 268 // TODO(ahe): Restore type when feature is implemented in dart2js
259 // checked mode. http://dartbug.com/7733 269 // checked mode. http://dartbug.com/7733
260 (/*T*/ element) { 270 (/*T*/ element) {
261 _runUserCode( 271 _runUserCode(
262 () => combine(value, element), 272 () => combine(value, element),
263 (result) { value = result; }, 273 (result) { value = result; },
(...skipping 928 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 1202
1193 /* TODO(8997): Implement EventSink instead, */ 1203 /* TODO(8997): Implement EventSink instead, */
1194 class _EventOutputSinkWrapper<T> extends StreamSink<T> { 1204 class _EventOutputSinkWrapper<T> extends StreamSink<T> {
1195 _EventOutputSink _sink; 1205 _EventOutputSink _sink;
1196 _EventOutputSinkWrapper(this._sink); 1206 _EventOutputSinkWrapper(this._sink);
1197 1207
1198 void add(T data) { _sink._sendData(data); } 1208 void add(T data) { _sink._sendData(data); }
1199 void addError(AsyncError error) { _sink._sendError(error); } 1209 void addError(AsyncError error) { _sink._sendError(error); }
1200 void close() { _sink._sendDone(); } 1210 void close() { _sink._sendDone(); }
1201 } 1211 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/implementation/lib/js_array.dart ('k') | sdk/lib/collection/collections.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698