Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Datafeeds
De achterwaartse feed
Elke feed tot nu toe stroomde voorwaarts met ==>, van
een bron links naar een doel rechts. Raku heeft ook de gespiegelde
operator, <==, de achterwaartse feed.
Die loopt andersom: het doel staat links, en de
gegevens worden van de bron rechts binnengetrokken.
Hier is de pijplijn met even getallen van eerder, achterstevoren geschreven:
my @evens <== grep(* %% 2) <== (1..10);
say @evens; # [2 4 6 8 10]Lees hem van rechts naar links: neem 1..10, houd de even
getallen, en verzamel ze in @evens. Het resultaat is
precies hetzelfde als
(1..10) ==> grep(* %% 2) ==> my @evens — alleen de
richting waarin je de fasen schrijft is veranderd.
Achterwaartse feeds rijgen zich op dezelfde manier aaneen, en opnieuw gaat het doel voorop:
my @result <== map(* ** 2) <== grep(* %% 2) <== (1..10);
say @result; # [4 16 36 64 100]Het werk gebeurt nog steeds bron-eerst — begin met
1..10, houd de even getallen, kwadrateer ze — maar op
papier staan de fasen opgesomd van de bestemming terug naar de
oorsprong. De volgorde van de elementen blijft ongemoeid;
<== verandert alleen de leesrichting, nooit de
gegevens.
Omdat code doorgaans van links naar rechts leest, leest de
voorwaartse ==> meestal natuurlijker: je komt de
gegevens eerst tegen en volgt ze naar waar ze belanden. De achterwaartse
<== is er voor de gelegenheden waarbij met de bestemming
beginnen het verhaal beter vertelt — eerst benoemen wat je
bouwt en daarna waaruit het gebouwd is. De twee zijn
exacte spiegelbeelden, dus kies de richting die het best leest.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Quiz — Feeds | Quiz — De achterwaartse feed →
💪 Of ga direct naar
de oefeningen in deze sectie.