Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Реактивно програмиране / Supply
Преобразуване на supply
Потокът може да бъде преобразуван, преди да се включите към него,
много подобно на списък. Методи като map и
grep произвеждат нов поток, чиито
стойности са преобразуваните:
my @out;
Supply.from-list(1, 2, 3).map(* * 10).tap(-> $v { @out.push($v) });
say @out; # [10 20 30]map(* * 10) изгражда нов поток, който подава по десет
пъти всяка първоначална стойност, а включването ги събира в
@out.
grep филтрира потока, като пропуска нататък само онези
стойности, за които блокът му е истина:
my @out;
Supply.from-list(1, 2, 3, 4, 5, 6).grep(* %% 2).tap(-> $v { @out.push($v) });
say @out; # [2 4 6]Понеже всяко преобразуване връща още един поток, можете да ги свързвате, изграждайки малък конвейер, който откликва на струята:
my @out;
Supply.from-list(1..6).grep(* %% 2).map(* ** 2).tap(-> $v { @out.push($v) });
say @out; # [4 16 36]Това е същият речник map/grep, който познавате от списъците, приложен към стойности, пристигащи във времето. Потокът върши тласкането; вашият конвейер оформя онова, което излиза.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Тест — Supply | Тест — Преобразуване на supply →
💪 Или преминете направо към упражненията в този
раздел.