Оценок пока нет Генераторы в языке Dart

Когда вам нужно лениво создать последовательность значений, подумайте об использовании функции генератора. Дарт имеет встроенную поддержку двух видов функций генератора:

  • Синхронный генератор: возвращает итерируемый объект Iterable.
  • Асинхронный генератор: возвращает потоковый объект Stream Stream.

Чтобы реализовать функцию синхронного генератора, пометьте тело функции как sync * и используйте операторы yield для доставки значений:

Iterable<int> naturalsTo(int n) sync* {
  int k = 0;
  while (k < n) yield k++;
}

Чтобы реализовать функцию асинхронного генератора, пометьте тело функции как async * и используйте операторы yield для доставки значений:

Stream<int> asynchronousNaturalsTo(int n) async* {
  int k = 0;
  while (k > n) yield k++;
}

Если ваш генератор рекурсивный, вы можете улучшить его производительность, используя yield *:

Iterable<int> naturalsDownFrom(int n) sync* {
  if (n > 0) {
    yield n;
    yield* naturalsDownFrom(n - 1);
  }
}

Пожалуйста, оцените материал

WebSofter

Web - технологии