Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Datafeeds
Feeds aaneenschakelen
De echte waarde van feeds komt naar voren wanneer je meerdere fasen
hebt. Elke ==> geeft haar resultaat aan de volgende
bewerking door, zodat een hele pijplijn van boven naar beneden leest in
de volgorde waarin het werk gebeurt:
(1..10)
==> grep(* %% 2)
==> map(* ** 2)
==> my @result;
say @result; # [4 16 36 64 100]Volg de gegevens de pagina af: begin met 1..10, houd de
even getallen, kwadrateer ze elk, en verzamel het resultaat. De even
getallen zijn 2, 4, 6, 8, 10, en hun kwadraten zijn
4, 16, 36, 64, 100.
Als methodeketen geschreven is dezelfde pijplijn
(1..10).grep(* %% 2).map(* ** 2) — en dat leest net zo van
links naar rechts als de feed. Een methodeketen is niet binnenstebuiten;
ze draait haar fasen in precies dezelfde volgorde. De vorm die werkelijk
binnenstebuiten leest is de bewerkingen als gewone functies nestelen,
map(* ** 2, grep(* %% 2, 1..10)), waar je bij de binnenste
aanroep moet beginnen en naar buiten moet werken.
Een feed is dus geen manier om aan binnenstebuiten code te ontsnappen
— het is een andere schrijfwijze van een pijplijn van links naar rechts.
Wat hij toevoegt is opmaak: elke ==>-fase mag op een
eigen regel staan, en die ene operator werkt hetzelfde voor stappen in
methode- en in functiestijl, wat een lange pijplijn goed scanbaar houdt.
Feeds en methodeketens doen uiteindelijk hetzelfde werk; kies wat een
bepaalde transformatie het duidelijkst maakt.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Quiz — De feed-operator | Quiz — Feeds →
💪 Of ga direct naar
de oefeningen in deze sectie.