Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Reaktiva programado / react kaj whenever

La bloko react

Bloko react estas loko, kie loĝas reagoj. Ene de ĝi, whenever diras «kiam ajn ĉi tiu supply eligas valoron, plenumu ĉi tiun korpon». La bloko react poste atendas, ĝis ĉiu supply, kiun ĝi observas, estas finita:

my $sum = 0;

react {
    whenever Supply.from-list(1, 2, 3) {
        $sum += $_;
    }
}

say $sum; # 6

La korpo whenever plenumiĝas unufoje por ĉiu valoro — 1, 2, 3 — aldonante ĝin al $sum. La tema valoro disponeblas kiel $_ (vi povas ankaŭ nomi ĝin per -> $v).

La ŝlosila konduto estas, ke react blokas, ĝis ĝiaj supply estas finitaj. Nur post kiam la Supply.from-list eligis ĉiujn siajn valorojn, la bloko react finiĝas kaj la programo pluiras al la say. Tial $sum jam estas 6 en la momento, kiam ĝi estas presata: la bloko react atendis la tutan fluon.

Tio faras react natura loko por kolekti rezultojn el fluo: starigu la reagojn, lasu ĝin kuri ĝis la fino kaj uzu poste tion, kion vi kolektis.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

react kaj whenever   |   Kvizo — react


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.