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

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

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

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

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

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