Выбор ответа Senior Функции, замыкания, генераторы обновлено
Генератор и return
Вопрос
Что вернёт $gen->getReturn() после полного перебора генератора?
function import(iterable $rows): Generator {
$n = 0;
foreach ($rows as $row) {
yield $row;
$n++;
}
return $n;
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Значение из return внутри генератора. С PHP 7.0 генератор может завершиться return $value, и это значение доступно через getReturn() после завершения (до завершения будет исключение).
Варианты ответа
nullвсегда: генераторы не могут возвращать значения- Значение из
returnвнутри генератораправильный ответ - Последнее значение
yield - Количество выданных элементов
Разбор
С PHP 7.0 генератор может завершиться return $value, и это значение доступно через getReturn() после завершения (до завершения будет исключение). Так генератор может отдавать поток элементов и итог, например число обработанных строк. Последний yield это обычный элемент, а счётчик нужно вести самому.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.