Курс языка программирования Raku / Продвинутый уровень / Порядок выполнения / gather и
take / Exercises / Квадраты
Решение: Квадраты
Вот возможное решение задачи.
Код
my @squares = gather for 1..6 {
take $_ ** 2 if $_ %% 2;
};
say @squares;🦋 Исходный код можно найти в файле squares.raku.
Вывод
[4 16 36]Комментарии
Условие
if $_ %% 2определяет, брать ли значение, а$_ ** 2определяет, что брать. Только чётные числа2,4,6проходят проверку.Их квадраты
4,16,36— единственные значения, переданные вtake, поэтомуgatherсобирает именно их. Совмещение фильтрации и преобразования в одномtake— это то, что обычныйmapне может выразить так же чисто.