Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Конвейеры данных
Оператор конвейера
Оператор конвейера ==> отправляет список слева в
операцию справа. Результат затем течёт дальше, куда указывает следующий
==>, и заканчивает путь в переменной, которая его
собирает:
(1..10) ==> grep(* %% 2) ==> my @evens;
say @evens; # [2 4 6 8 10]Читайте слева направо: возьми 1..10, оставь чётные числа
и сохрани результат в @evens. Оператор %%
означает «делится на», поэтому * %% 2 оставляет чётные
числа.
Важное правило: конвейер обязан заканчиваться
приёмником — обычно это my @array (или уже
существующая переменная). Данные втекают в него. Записывать присваивание
в обратную сторону, через =, — не то, что вам нужно, потому
что конвейер и присваивание начнут спорить друг с другом; всегда давайте
конвейеру дотечь до своей переменной.
Конвейер — это просто другой способ записать цепочку операций над
списком. Тот же результат можно записать как
my @evens = (1..10).grep(* %% 2). По-настоящему конвейер
раскрывается, когда ступеней несколько, — об этом следующая тема.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Конвейеры данных | Тест — Оператор конвейера →
💪 Или перейдите сразу к упражнениям этого
раздела.