Cursus Raku / Geavanceerd / Operatoren / Meta-operatoren
Reductie-meta-operatoren
Een reductie-meta-operator wordt geschreven als een gewone operator
tussen vierkante haken, zoals [+] of [*]. Hij
neemt een lijst waarden en plaatst de operator tussen elk paar, waardoor
de hele lijst tot een enkele waarde wordt gereduceerd.
Bijvoorbeeld, [+] telt alle elementen van een lijst
op:
my @data = 3, 5, 7, 9, 11;
say [+] @data; # 35De constructie [+] @data is gelijkwaardig aan het met de
hand uitschrijven van de operator:
say 3 + 5 + 7 + 9 + 11; # 35Elke geschikte infix-operator werkt op dezelfde manier. Met
[*] krijg je het product van de lijst, dus het toepassen
ervan op het bereik 1..$n is een handige manier om een
faculteit te berekenen:
my $n = 5;
say [*] 1..$n; # 120Hier produceert het bereik 1..$n de getallen van 1 tot
5, en [*] vermenigvuldigt ze:
1 * 2 * 3 * 4 * 5, wat 5! is.
Tekenreeksconcatenatie werkt ook. De [~]-reductie voegt
een lijst tekenreeksen samen tot een:
my @strings = <neun hundert fünf und zwanzig>;
say [~] @strings; # neunhundertfünfundzwanzigZelfs vergelijkingsoperatoren kunnen worden gereduceerd.
[<] geeft aan of de waarden in strikt oplopende volgorde
staan:
say [<] 1, 2, 3; # TrueDriehoeksreductie
Als je een backslash binnen de haken plaatst, krijg je een _driehoeks_reductie, die alle tussenresultaten bewaart in plaats van alleen het eindresultaat:
say [\+] 1..5; # (1 3 6 10 15)Elk element van het resultaat is een gedeeltelijke som:
1, dan 1+2, dan 1+2+3, enzovoort
tot aan de som van de hele lijst.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Meta-operatoren | Quiz — Reductie →
💪 Of ga direct naar de oefeningen in deze
sectie.