Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование

Генераторы

Генератор — это процедура, которая выдаёт череду значений по одному, отдавая каждое по требованию, вместо того чтобы строить весь список заранее. В Raku он записывается парой gather / take: внутри блока gather каждый take отдаёт одно значение получаемой последовательности, и блок замирает прямо на этом месте, пока не затребуют следующее значение.

Поскольку значения производятся лениво — только тогда, когда их спрашивают, — генератор может описывать даже бесконечную череду. В этом разделе показано, как строить последовательности с помощью gather и take. Более низкоуровневая механика, которая на самом деле вытягивает эти значения одно за другим, — предмет следующего раздела, Итераторы.

Темы этого раздела

Практика

Пройдите 1 тест по содержанию этого раздела.

Упражнения

В этом разделе 3 упражнения. Прежде чем приступать к практике, изучите все темы раздела.

  1. Соберите кубы
  2. Соберите числа, кратные трём
  3. Сбор с условием

Навигация по курсу

Решение: Сортировка конвейером   |   gather и take