Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Reaktīvā programmēšana / react un whenever / Exercises / Divi whenever
Risinājums: Divi whenever
Šeit ir iespējams risinājums uzdevumam.
Kods
my $deposits = Supply.from-list(100, 50, 200);
my $withdrawals = Supply.from-list(30, 120);
my $balance = 0;
react {
whenever $deposits { $balance += $_ }
whenever $withdrawals { $balance -= $_ }
}
say $balance;🦋 Atrodiet programmu failā two-whenevers.raku.
Izvade
200Komentāri
Abi
wheneverbloki vēro abas nosauktās supply un reaģē atšķirīgi: iemaksas tiek pieskaitītas, izmaksas atņemtas. Viensreactbloks, divas straumes, divas dažādas reakcijas — tieši tāda ir jēga vienamwheneverkatram avotam.reactbloks beidzas tikai tad, kad pabeigtas ir abas supply, tāpēc atlikums pirms izdrukāšanas ir galīgs:100 + 50 + 200 - 30 - 120dod200. Tā kā saskaitīšana un atņemšana ir komutatīvas, abu straumju savijums rezultātu neietekmē.Šeit abas supply savas vērtības piegādā acumirklī, viena straume pēc otras. Īstajā dzīvē bankas konta notikumi pienāk izklaidus laikā — iemaksa tagad, izmaksa stundu vēlāk —, un abas straumes savijas, kā tas redzams Divu taimeru demonstrējumā. Kods paliek tieši tāds pats:
reactbloks izpilda towheneverķermeni, kas atbilst katram ienākošajam notikumam.
Kursa navigācija
← Divi whenever | await →