Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione reattiva / react e whenever / Il blocco react

Quiz — react

Cosa stampa il programma seguente?

my @got;

react {
    whenever Supply.from-list(1, 2, 3, 4, 5) {
        @got.push($_);
        done if $_ == 3;
    }
}

say @got;
1[1 2 3]
0[1 2 3 4 5]
0[3]
0[4 5]

Il corpo del whenever raccoglie ogni valore, ma chiama done non appena vede 3. done chiude il blocco react, quindi il supply viene abbandonato e 4 e 5 non vengono mai elaborati, lasciando [1 2 3].

Il blocco react   |   whenever