Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Reaktive Programmierung / react und whenever
whenever und when
Die Form eines react-Blocks mag bekannt vorkommen. Ein
äußerer Block, der mehrere innere Blöcke enthält, die jeweils auf dem
Thema $_ arbeiten, ist genau die Schreibweise von given/when.
Hätten Sie einen einzelnen Temperaturmesswert statt eines ganzen Stroms
davon, würden Sie so darauf verzweigen:
given $temperature {
when 18 { say 'cool' }
when 21 { say 'warm' }
}Die Ähnlichkeit zu react/whenever ist echt,
doch die beiden erledigen sehr verschiedene Aufgaben:
given/whenbehandelt einen Wert, jetzt sofort.givensetzt$_auf einen einzelnen Wert; jedeswhenprüft ihn ($_ ~~ 18), das erste Zutreffen läuft, und der Block ist fertig. Es ist eine gewöhnliche, gleichzeitig ablaufende Verzweigung.react/wheneverbehandelt viele Werte, im Lauf der Zeit. Einwheneverprüft$_nicht gegen ein Muster — es abonniert ein Supply, und sein Rumpf läuft für jeden Wert, den dieses Supply aussendet, wann immer dieser Wert eintrifft. Allewheneversind zugleich aktiv, undreactblockiert weiter, bis jedes ihrer Supplies fertig ist.
when fragt also „trifft dieser eine Wert zu?“, während
whenever sagt „tu dies für jeden Wert, den dieser Strom je
erzeugt“. Dasselbe Gerüst, sehr verschiedene Leben: eine einmal
genommene Verzweigung gegenüber einer Reaktion, die immer wieder läuft,
sobald Ereignisse eintreffen.
Kursnavigation
← Außerhalb definierte Supplies | Zwei Timer →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.