Курс языка программирования 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 тест по содержанию этой темы.

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

Конвейеры данных   |   Тест — Оператор конвейера


💪 Или перейдите сразу к упражнениям этого раздела.