Курс Raku / Розширені / Порядок виконання
gather та take
Пара gather і take — це гнучкий спосіб
побудувати список. Ви загортаєте якийсь код у блок gather,
і щоразу, коли цей код викликає take, значення додається до
списку, який видає gather.
my @result = gather {
take 1;
take 2;
take 3;
};
say @result; # [1 2 3]Три виклики take дають три значення, а
gather збирає їх у список, збережений у
@result.
Справжня сила цієї пари виявляється, коли виклики take
розкидані по звичайному потоку виконання — наприклад, по циклу з умовою.
Тоді список містить лише ті значення, які ви вирішили взяти:
my @evens = gather for 1..10 {
take $_ if $_ %% 2;
};
say @evens; # [2 4 6 8 10]Тут цикл проходить числа від 1 до 10, але береться лише парні, тож у
@evens опиняються 2, 4, 6, 8, 10. (Оператор
%% перевіряє, чи ділиться число націло.)
Саме це розділення робить gather/take таким
зручним: код навколо вирішує, коли видати значення, а
gather тихо збирає все, що взяли.
Практика
Виконайте 1 тест за змістом цієї теми.
Вправи
У цьому розділі 3 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.
Навігація курсом
← Розв’язання: Зіставлення за типом | Повторити кожне число →