Генераторы и Итераторы простым языком

88
26 января 2022, 09:20

Может кто нибудь объяснить простым языком что такое генераторы и итераторы, например в php и чем отличается return от yield?

Answer 1

return возвращает значение и прекращает работу функции.

yield возвращает значение и переходит к началу цикла, работает дальше до тех пор, пока все значения не закончатся или пока приниматель значений не скажет "хватит!"

Answer 2

Дополню.

Итератор - по простому это объект (или другие контрукции), которые можно прогонять в цикле. Точнее Итератор - это интерфейс для этого, а вот то что можно прогнать в цикле - это итерируемый объект.

Массив - пример итерируемой структуры языка. Коллекция - это итерируемый объект.

Генератор - это тоже итератор, но только с другой структурой. Он позволяет остановиться на том моменте, где был прошлый цикл. Лучше почитать документацию, как это работает.

В целом генератор итератором. А итератор (итерируемый объект, только объект не смысле ООП, а в смысле простого указания) - это все, что можно использовать в цикле.

READ ALSO
Проверка в сети ли пользователь php

Проверка в сети ли пользователь php

Всем привет, на днях решил написать скрипт, определяющий, находится ли человек на сайте на PHPнаписал, вроде все работает, но столкнулся с проблемой,...

91
Подключение к базе данных sql через php

Подключение к базе данных sql через php

Пытаюсь подключиться к базе данных с помощью этого скрипта

110
Вывод запроса sql в html

Вывод запроса sql в html

Есть задача: пользователь вводит в вебстраницу номер учебной группы, идёт запрос sql, пользователю возвращается расписание на сегодня

218
Срабатывание BEFORE INSERT триггера при запросе INSERT...SELECT

Срабатывание BEFORE INSERT триггера при запросе INSERT...SELECT

Есть триггер для проверки уникальности вставляемого поля login в таблицу Client

170