Raku-Kurs / Fortgeschritten / Operatoren / Meta-Operatoren
Reduktions-Metaoperatoren
Ein Reduktions-Meta-Operator wird als regulärer Operator in eckigen
Klammern geschrieben, wie z. B. [+] oder [*].
Er nimmt eine Liste von Werten und fügt den Operator zwischen jedes Paar
ein, wodurch die gesamte Liste auf einen einzelnen Wert reduziert
wird.
Zum Beispiel addiert [+] alle Elemente einer Liste:
my @data = 3, 5, 7, 9, 11;
say [+] @data; # 35Das Konstrukt [+] @data entspricht dem manuellen
Ausschreiben des Operators:
say 3 + 5 + 7 + 9 + 11; # 35Jeder geeignete Infix-Operator funktioniert auf die gleiche Weise.
Mit [*] erhalten Sie das Produkt der Liste, sodass die
Anwendung auf den Bereich 1..$n eine praktische Methode
ist, eine Fakultät zu berechnen:
my $n = 5;
say [*] 1..$n; # 120Hier erzeugt der Bereich 1..$n die Zahlen von 1 bis 5,
und [*] multipliziert sie: 1 * 2 * 3 * 4 * 5,
das ist 5!.
Zeichenkettenverkettung funktioniert ebenfalls. Die
[~]-Reduktion verbindet eine Liste von Zeichenketten zu
einer einzigen:
my @strings = <neun hundert fünf und zwanzig>;
say [~] @strings; # neunhundertfünfundzwanzigSogar Vergleichsoperatoren können reduziert werden.
[<] prüft, ob die Werte in streng aufsteigender
Reihenfolge stehen:
say [<] 1, 2, 3; # TrueDreieckige Reduktion
Wenn Sie einen Backslash in die Klammern setzen, erhalten Sie eine dreieckige Reduktion, die alle Zwischenergebnisse behält, anstatt nur das endgültige:
say [\+] 1..5; # (1 3 6 10 15)Jedes Element des Ergebnisses ist eine Teilsumme: 1,
dann 1+2, dann 1+2+3, und so weiter bis zur
Summe der gesamten Liste.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Meta-Operatoren | Quiz — Reduktion →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.