Задать вопрос
EgoRusMarch
@EgoRusMarch
C++ Developer

Как/почему функция-генератор присваивается переменной?

Вот такой пример из книги:
5b7bcb190a45c247917813.png
Почему это работает? Почему не происходит вызов при присваивании, а только внутри foreach?
Это особенность генераторов или я чего-то не понял и так же можно функции присваивать?
Я читал, что функции в PHP можно вызвать так:
$variable = "function";
$variable();

Но не как в примере.
  • Вопрос задан
  • 92 просмотра
Подписаться Простой 5 комментариев
Решения вопроса 2
это особенность функций генераторов.
вызов $collect = collect(); возвращает объект \Generator
а потом вы уже итерируетесь по этому объекту.
Ответ написан
Комментировать
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Почитайте внимательно про yield.
Если упрощённо, то в момент присвоения как раз таки и происходит вызов, однако yield выполняется после того как к нему обратится метод, работающий с генератором. Например foreach.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы