Курс Raku / Розширені / Порядок виконання / gather та take / Вправи / Квадрати

Розв’язання: Квадрати

Ось один із можливих варіантів розв’язання задачі.

Код

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 не виражає так чисто.

Навігація курсом

Квадрати   |   Збирати до заповнення