Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione reattiva / react e whenever / Exercises / Smistate in due array

Soluzione: Smistate in due array

Ecco una possibile soluzione del compito.

Codice

my @small;
my @big;

react {
    whenever Supply.from-list(4, 42, 7, 100, 15) {
        if $_ > 10 { @big.push($_) }
        else       { @small.push($_) }
    }
}

say @small;
say @big;

🦋 Trova il programma nel file react-collect.raku.

Output

[4 7]
[42 100 15]

Commenti

  1. Il corpo del whenever è codice ordinario, quindi può fare più che raccogliere: qui decide, instradando ogni valore verso @big o @small man mano che arriva. Dentro ciascun array i valori mantengono l’ordine del flusso.

  2. Il blocco react aspetta che il flusso sia concluso, quindi entrambi gli array sono completi prima di essere stampati.

Smistate in due array   |   Due whenever