Cursus Raku / Programmatio functionalis, simultanea, reactiva et retialis / Programmatio reactiva / react et whenever / whenever
Quiz — whenever et done
Quid haec programma imprimit?
my @out;
react {
whenever Supply.from-list(1, 2, 3) {
@out.push($_);
done if $_ == 2;
}
whenever Supply.from-list(10, 20) {
@out.push($_);
}
}
say @out;| 1 | [1 2] |
| 0 | [1 2 10 20] |
| 0 | [1 2 3 10 20] |
| 0 | [10 20] |
Primum whenever 1 immittit, deinde
2 — et ad 2 done vocat. Punctum
grave est quod done totum blocum
react finit, non solum proprium
whenever: reliquum supply primi (3) et
totum supply secundum (10, 20) praecidantur
antequam tradantur. Itaque @out solum [1 2]
tenet. Si done solum proprium fluxum silentio premeret,
[1 2 10 20] vidisses — sed unum done omnes
reactiones simul sistit.