Выбор ответа Middle Итераторы и генераторы обновлено

Что делает yield*

Вопрос

Что делает yield* other внутри генератора?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Выдаёт по очереди все значения other и возвращает его return-значение. yield делегирует: пока other выдаёт значения, они идут наружу так, будто их выдал текущий генератор, а вызовы next(value), throw и return пробрасываются во вложенный.

Варианты ответа

  1. Выдаёт итерируемый объект other целиком одним значением, как массив
  2. Умножает текущее значение на следующее, выданное генератором other
  3. Запускает other параллельно с текущим генератором и сливает их значения
  4. Выдаёт по очереди все значения other и возвращает его return-значениеправильный ответ

Разбор

yield* делегирует: пока other выдаёт значения, они идут наружу так, будто их выдал текущий генератор, а вызовы next(value), throw и return пробрасываются во вложенный. Результатом выражения yield* становится значение, которое вложенный генератор вернул через return. Отдать массив целиком одним значением делает обычный yield. Параллельности в генераторах нет, а звёздочка тут не умножение.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.