❓ Зачем нужен yield вместо return с массивом?
yield превращает функцию в генератор. Вместо того чтобы собрать все данные в массив и вернуть целиком, функция отдаёт значения по одному, по мере запроса.
Главный профит — память. Если обрабатываешь CSV на 500 тысяч строк, с массивом ты загрузишь всё в RAM разом. С генератором в памяти живёт одна строка. Генератор реализует интерфейс Iterator, с ним работает foreach. Минус — нельзя перемотать назад, обойти можно только один раз.
Используй когда данных много, порядок линейный, и случайный доступ не нужен.
Post #1362
880
- 👍 2
- 🔥 1
- 👏 1