Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Funktionale Programmierung / Reduktion

Der Reduktions-Metaoperator

Setzen Sie einen beliebigen Infixoperator in eckige Klammern, und er wird zu einer Reduktion: Er wird zwischen jedes Element einer Liste gesetzt und klappt die Liste zu einem Wert zusammen.

say [+] 1, 2, 3, 4, 5; # 15
say [*] 1, 2, 3, 4, 5; # 120

[+] summiert die Liste, als hätten Sie 1 + 2 + 3 + 4 + 5 geschrieben; [*] multipliziert sie. Dasselbe funktioniert mit jedem Infixoperator:

say [max] 4, 9, 2, 7; # 9
say [min] 4, 9, 2, 7; # 2
say [~] 'a', 'b', 'c'; # abc

[max] reduziert mit dem Operator max, um das größte Element zu finden, und [~] reduziert mit dem Verkettungsoperator ~, um die Stücke zusammenzufügen.

Der Reduktions-Metaoperator arbeitet auf jeder Liste, auch auf einem Bereich:

say [+] 1..100; # 5050

Er ist eine von Rakus knappsten und ausdrucksstärksten Möglichkeiten: eine ganze Schleife voller Aufsummierung in einem Klammerpaar.

Praxis

Lösen Sie 1 Quiz zum Inhalt dieses Themas.

Kursnavigation

Reduktion   |   Quiz — Der Reduktions-Metaoperator


💪 Oder springen Sie direkt zu den Übungen dieses Abschnitts.