По порядку Middle Функции, замыкания, генераторы обновлено

Порядок выполнения генератора

Вопрос

Генератор: function g() { echo "A"; yield 1; echo "B"; yield 2; echo "C"; }. Код: $gen = g(); echo "X"; foreach ($gen as $v) echo $v; echo "Y";. Расставьте выводимые фрагменты по порядку.

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

Расставьте шаги по порядку стрелками.

  1. 1
    A
  2. 2
    B
  3. 3
    X
  4. 4
    2
  5. 5
    C
  6. 6
    Y
  7. 7
    1
Показать ответ и разбор

Коротко

Вызов g() только создаёт генератор, тело не выполняется: первым печатается X. foreach запускает тело до первого yield (A), получает 1, затем продолжает до следующего (B, 2), затем доходит до конца (C), и цикл завершается: Y.

Правильный порядок

  1. 1
    X
  2. 2
    A
  3. 3
    1
  4. 4
    B
  5. 5
    2
  6. 6
    C
  7. 7
    Y

Разбор

Вызов g() только создаёт генератор, тело не выполняется: первым печатается X. foreach запускает тело до первого yield (A), получает 1, затем продолжает до следующего (B, 2), затем доходит до конца (C), и цикл завершается: Y.

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

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