Курс по 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 тест върху съдържанието на тази тема.

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

Свиване   |   Тест — Метаоператорът за свиване


💪 Или преминете направо към упражненията в този раздел.