Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Reductie

De reductie-meta-operator

Zet elke infixoperator tussen vierkante haken en hij wordt een reductie: hij wordt tussen elk element van een lijst ingevoegd en klapt de lijst tot één waarde in.

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

[+] telt de lijst op alsof je 1 + 2 + 3 + 4 + 5 geschreven had; [*] vermenigvuldigt haar. Hetzelfde werkt met elke infixoperator:

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

[max] reduceert met de operator max om het grootste element te vinden, en [~] reduceert met de stringplakoperator ~ om de stukken aan elkaar te plakken.

De reductiemeta-operator werkt op elke lijst, ook op een bereik:

say [+] 1..100; # 5050

Het is een van Raku’s compactste en meest expressieve mogelijkheden: een hele lus aan accumulatie in een paar haken.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Reductie   |   Quiz — De reductie-meta-operator


💪 Of ga direct naar de oefeningen in deze sectie.