два типа генераторов:
Synchronous generator: Returns an Iterable object.
Iterable
Asynchronous generator: Returns a Stream object.
Stream
// 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); } }
Last updated 3 years ago