РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
26 of 723 menu

Оператор yield

Оператор yield используется внутри функции-генератора и возвращает очередное значение последовательности. Функция-генератор объявляется с ключевым словом sync* или async*. При каждом вызове yield выполнение функции приостанавливается, а значение передается наружу. Когда потребитель запрашивает следующий элемент, выполнение продолжается с того места, где оно было прервано. В отличие от return, оператор yield не завершает функцию, а лишь отдает одно значение из последовательности.

Синтаксис

Iterable<Type> functionName() sync* { yield value; }

Пример

Давайте создадим генератор, который поочередно возвращает числа от 1 до 5:

Iterable<int> numbers() sync* { yield 1; yield 2; yield 3; yield 4; yield 5; } void main() { print(numbers().toList()); }

Результат выполнения кода:

[1, 2, 3, 4, 5]

Пример

Давайте используем yield внутри цикла for, чтобы вернуть элементы списка:

Iterable<String> letters() sync* { List<String> list = ['a', 'b', 'c', 'd', 'e']; for (String item in list) { yield item; } } void main() { print(letters().toList()); }

Результат выполнения кода:

[a, b, c, d, e]

Пример

Давайте переберем значения генератора с помощью цикла for-in:

Iterable<int> numbers() sync* { for (int i = 1; i <= 5; i++) { yield i; } } void main() { for (int num in numbers()) { print(num); } }

Результат выполнения кода:

1 2 3 4 5

Пример

Давайте создадим асинхронный генератор с помощью async* и yield, возвращающий строки:

Stream<String> strings() async* { yield 'abcde'; yield '12345'; } void main() async { await for (String str in strings()) { print(str); } }

Результат выполнения кода:

"abcde" "12345"

Смотрите также

  • оператор yield*,
    который делегирует значения другому генератору
  • ключевое слово sync*,
    которое объявляет синхронный генератор
  • ключевое слово async*,
    которое объявляет асинхронный генератор
  • ключевое слово return,
    которое завершает функцию и возвращает результат
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить