Last updated 3 years ago
два типа генераторов:
Synchronous generator: Returns an object.
Asynchronous generator: Returns a object.
// Sync Iterable<int> naturalsTo(int n) sync* { int k = 0; while (k < n) yield k++; } // Async Stream<int> asynchronousNaturalsTo(int n) async* { int k = 0; while (k < n) yield k++; }
Если генератор рекурсивный, используем yield*.
yield*
Iterable<int> naturalsDownFrom(int n) sync* { if (n > 0) { yield n; yield* naturalsDownFrom(n - 1); } }
Iterable
Stream