Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación reactiva / react y whenever / El bloque react

Quiz — react

¿Qué imprime el programa siguiente?

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]

El cuerpo del whenever recoge cada valor, pero llama a done en cuanto ve el 3. done cierra el bloque react, así que el supply se abandona y 4 y 5 no se procesan nunca, dejando [1 2 3].

El bloque react   |   whenever