Что такое генераторы? (yield, yield from)

Ответ

Генератор - функция, которая возвращает значения по одному через yield:

function fibonacci(): Generator {
    $a = 0; $b = 1;
    while (true) {
        yield $a;
        [$a, $b] = [$b, $a + $b];
    }
}

foreach (fibonacci() as $num) {
    if ($num > 100) break;
    echo "$num ";  // 0 1 1 2 3 5 8 13 21 34 55 89
}

// yield from - делегирование
function merged(): Generator {
    yield from [1, 2, 3];
    yield from range(4, 6);
}

Генератор - ленивый: вычисляет следующее значение только по запросу. Не загружает все данные в память.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.