Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione reattiva / Supply
Trasformare un supply
Un supply può essere trasformato prima che tu vi attinga, un po’ come
un elenco. Metodi come map e grep producono un
nuovo supply i cui valori sono quelli trasformati:
my @out;
Supply.from-list(1, 2, 3).map(* * 10).tap(-> $v { @out.push($v) });
say @out; # [10 20 30]Il map(* * 10) costruisce un nuovo supply che emette
dieci volte ogni valore originale, e la presa li raccoglie in
@out.
grep filtra un supply, lasciando passare solo i valori
per i quali il suo blocco è vero:
my @out;
Supply.from-list(1, 2, 3, 4, 5, 6).grep(* %% 2).tap(-> $v { @out.push($v) });
say @out; # [2 4 6]Poiché ogni trasformazione restituisce un altro supply, puoi concatenarle, costruendo una piccola pipeline che reagisce al flusso:
my @out;
Supply.from-list(1..6).grep(* %% 2).map(* ** 2).tap(-> $v { @out.push($v) });
say @out; # [4 16 36]È lo stesso vocabolario di map e grep che conosci dagli elenchi, applicato a valori che arrivano nel tempo. Il supply fa la spinta; la tua pipeline dà forma a ciò che esce.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Quiz — Supply | Quiz — Trasformare un supply →
💪 Oppure vai direttamente agli esercizi di questa
sezione.