Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Reaktiva programado / Supply

Transformi supply

Supply povas esti transformita antaŭ ol vi konektiĝas al ĝi, tre kiel listo. Metodoj kiel map kaj grep produktas novan supply, kies valoroj estas la transformitaj:

my @out;
Supply.from-list(1, 2, 3).map(* * 10).tap(-> $v { @out.push($v) });
say @out; # [10 20 30]

La map(* * 10) konstruas novan supply, kiu eligas dekoblon de ĉiu originala valoro, kaj la konekto kolektas tiujn en @out.

grep filtras supply, transdonante nur la valorojn, por kiuj ĝia bloko estas vera:

my @out;
Supply.from-list(1, 2, 3, 4, 5, 6).grep(* %% 2).tap(-> $v { @out.push($v) });
say @out; # [2 4 6]

Ĉar ĉiu transformo redonas alian supply, vi povas ĉenigi ilin, konstruante malgrandan ĉenstacion, kiu reagas al la fluo:

my @out;
Supply.from-list(1..6).grep(* %% 2).map(* ** 2).tap(-> $v { @out.push($v) });
say @out; # [4 16 36]

Jen la sama vortprovizo de map/grep, kiun vi konas el listoj, aplikita al valoroj alvenantaj en la tempo. La supply faras la puŝadon; via ĉenstacio formas tion, kio eliras.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

Kvizo — Supply   |   Kvizo — Transformi supply


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.