Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Свёртка
Метаоператор свёртки
Заключите любой инфиксный оператор в квадратные скобки, и он станет свёрткой: он вставляется между каждыми элементами списка, схлопывая список в одно значение.
say [+] 1, 2, 3, 4, 5; # 15
say [*] 1, 2, 3, 4, 5; # 120[+] суммирует список, как если бы вы написали
1 + 2 + 3 + 4 + 5; [*] его перемножает. То же
работает с любым инфиксным оператором:
say [max] 4, 9, 2, 7; # 9
say [min] 4, 9, 2, 7; # 2
say [~] 'a', 'b', 'c'; # abc[max] сворачивает список оператором max,
находя наибольший элемент, а [~] сворачивает оператором
конкатенации строк ~, склеивая кусочки вместе.
Метаоператор свёртки работает с любым списком, в том числе с диапазоном:
say [+] 1..100; # 5050Это одна из самых компактных и выразительных возможностей Raku: накопление на целый цикл — в одной паре скобок.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Свёртка | Тест — Метаоператор свёртки →
💪 Или перейдите сразу к упражнениям этого
раздела.