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

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

Згортка   |   Тест — Метаоператор згортки


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