Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Reaktiva programado / react kaj whenever
whenever kaj when
La formo de bloko react povas aspekti konata. Ekstera
bloko tenanta plurajn internajn blokojn, ĉiu agante sur la temo
$_, estas ĝuste tiel, kiel given/when
estas skribata. Se vi havus unu solan temperaturan legaĵon anstataŭ
tutan fluon da ili, vi branĉus sur ĝi jene:
given $temperature {
when 18 { say 'cool' }
when 21 { say 'warm' }
}La simileco al react/whenever estas reala,
sed la du faras tre malsamajn laborojn:
given/whentraktas unu valoron, ĝuste nun.givenfiksas$_al unu sola valoro; ĉiuwhentestas ĝin ($_ ~~ 18), la unua kongruo plenumiĝas, kaj la bloko finiĝas. Ĝi estas ordinara, sinkrona kondiĉo.react/whenevertraktas multajn valorojn, en la tempo.wheneverne testas$_kontraŭ ŝablono — ĝi abonas al supply, kaj ĝia korpo plenumiĝas por ĉiu valoro, kiun tiu supply eligas, kiam ajn tiu valoro alvenas. Ĉiujwheneverestas vivaj samtempe, kajreactdaŭre blokas, ĝis ĉiu el iliaj supply estas finita.
Do when demandas «ĉu ĉi tiu unu valoro kongruas?», dum
whenever diras «por ĉiu valoro, kiun ĉi tiu fluo iam
produktas, faru ĉi tion». Sama skeleto, tre malsamaj vivoj: branĉo
prenata unu solan fojon, kontraŭ reago, kiu plenumiĝas denove kaj denove
laŭ la alveno de eventoj.
Kursa navigado
← Supply difinitaj ekstere | Du tempigiloj →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.