Курс 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 тест за змістом цієї теми.

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

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


💪 Або перейдіть одразу до вправ цього розділу.