Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Reaktive Programmierung / react und whenever
Außerhalb definierte Supplies
Jedes whenever bisher hat sein Supply gleich im Kopf
erzeugt — whenever Supply.from-list(...). Das liest sich
für ein schnelles Beispiel gut, doch echte Programme haben ihre
Ereignisquelle selten genau an dieser Stelle zur Hand. Häufiger wird ein
Supply anderswo gebaut — von einer Funktion geliefert, von einem
Supplier erzeugt oder Ihnen von einem Socket oder einem
Zeitgeber überreicht — und kommt als gewöhnliche Variable an. Ein
whenever beobachtet ebenso bereitwillig ein benanntes
Supply:
my $sensors = Supply.from-list(18, 21, 19);
my $messages = Supply.from-list('hi', 'bye');
react {
whenever $sensors {
say "temperature: $_";
}
whenever $messages {
say "message: $_";
}
}Das gibt aus:
temperature: 18
temperature: 21
temperature: 19
message: hi
message: byeLesen Sie whenever $sensors { … } also als „wann immer
das Supply $sensors — woher es auch stammt — einen Wert
aussendet, führe diesen Rumpf aus“. Das inline stehende
whenever Supply.from-list(...) von zuvor ist nur der
Sonderfall, in dem die Quelle zufällig an Ort und Stelle erzeugt
wird.
Wenn Sie diese Form aus äußerem Block mit inneren Blöcken an etwas
erinnert, haben Sie recht — die nächste Seite
vergleicht sie mit given/when.
Kursnavigation
← Quiz — whenever und done | whenever und when →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.