Курс языка программирования Raku / Продвинутый уровень / Порядок выполнения / gather и take / Exercises / Квадраты

Решение: Квадраты

Вот возможное решение задачи.

Код

my @squares = gather for 1..6 {
    take $_ ** 2 if $_ %% 2;
};

say @squares;

🦋 Исходный код можно найти в файле squares.raku.

Вывод

[4 16 36]

Комментарии

  1. Условие if $_ %% 2 определяет, брать ли значение, а $_ ** 2 определяет, что брать. Только чётные числа 2, 4, 6 проходят проверку.

  2. Их квадраты 4, 16, 36 — единственные значения, переданные в take, поэтому gather собирает именно их. Совмещение фильтрации и преобразования в одном take — это то, что обычный map не может выразить так же чисто.

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

Квадраты   |   Собирать до заполнения