Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Reactief programmeren / Supplies

Een supply omvormen

Een supply kan omgevormd worden voordat je hem aftapt, vrijwel als een lijst. Methoden als map en grep leveren een nieuwe supply op waarvan de waarden de omgevormde zijn:

my @out;
Supply.from-list(1, 2, 3).map(* * 10).tap(-> $v { @out.push($v) });
say @out; # [10 20 30]

De map(* * 10) bouwt een nieuwe supply die tien keer elke oorspronkelijke waarde uitzendt, en de tap verzamelt die in @out.

grep filtert een supply en laat alleen de waarden door waarvoor zijn blok waar is:

my @out;
Supply.from-list(1, 2, 3, 4, 5, 6).grep(* %% 2).tap(-> $v { @out.push($v) });
say @out; # [2 4 6]

Omdat elke omvorming weer een supply teruggeeft, kun je ze aaneenrijgen en zo een kleine pijplijn bouwen die op de stroom reageert:

my @out;
Supply.from-list(1..6).grep(* %% 2).map(* ** 2).tap(-> $v { @out.push($v) });
say @out; # [4 16 36]

Dit is dezelfde woordenschat van map en grep die je van lijsten kent, toegepast op waarden die in de loop van de tijd binnenkomen. De supply doet het duwen; jouw pijplijn bepaalt de vorm van wat eruit komt.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Quiz — Supplies   |   Quiz — Een supply omvormen


💪 Of ga direct naar de oefeningen in deze sectie.