Курс Raku / Розширені / Оператори / Метаоператори
Метаоператори редукції
Метаоператор згортки записується як звичайний оператор, узятий у
квадратні дужки, наприклад [+] або [*]. Він
бере список значень і вставляє оператор між кожною їхньою парою,
згортаючи весь список до одного значення.
Наприклад, [+] додає всі елементи списку:
my @data = 3, 5, 7, 9, 11;
say [+] @data; # 35Конструкція [+] @data рівносильна тому, щоб виписати
оператор вручну:
say 3 + 5 + 7 + 9 + 11; # 35Будь-який придатний інфіксний оператор працює так само. З
[*] ви отримуєте добуток списку, тож застосування його до
діапазону 1..$n є зручним способом обчислити факторіал:
my $n = 5;
say [*] 1..$n; # 120Тут діапазон 1..$n дає числа від 1 до 5, а
[*] їх перемножує: 1 * 2 * 3 * 4 * 5, тобто
5!.
Конкатенація рядків працює теж. Згортка [~] з’єднує
список рядків в один:
my @strings = <neun hundert fünf und zwanzig>;
say [~] @strings; # neunhundertfünfundzwanzigЗгортати можна навіть оператори порівняння. [<]
повідомляє, чи розташовані значення в строго зростальному порядку:
say [<] 1, 2, 3; # TrueТрикутна згортка
Якщо поставити всередині дужок зворотну косу риску, ви отримаєте трикутну згортку, яка зберігає всі проміжні результати, а не лише кінцевий:
say [\+] 1..5; # (1 3 6 10 15)Кожен елемент результату є частковою сумою: 1, потім
1+2, потім 1+2+3 і так далі аж до суми всього
списку.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Метаоператори | Тест — Редукція →
💪 Або перейдіть одразу до вправ цього
розділу.