Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación reactiva / Supplies
Transformar un supply
Un supply se puede transformar antes de engancharlo, muy parecido a
una lista. Métodos como map y grep producen un
supply nuevo cuyos valores son los transformados:
my @out;
Supply.from-list(1, 2, 3).map(* * 10).tap(-> $v { @out.push($v) });
say @out; # [10 20 30]El map(* * 10) construye un supply nuevo que emite diez
veces cada valor original, y el enganche los recoge en
@out.
grep filtra un supply, dejando pasar solo los valores
para los que su bloque es verdadero:
my @out;
Supply.from-list(1, 2, 3, 4, 5, 6).grep(* %% 2).tap(-> $v { @out.push($v) });
say @out; # [2 4 6]Como cada transformación devuelve otro supply, puedes encadenarlas, construyendo una pequeña tubería que reacciona al flujo:
my @out;
Supply.from-list(1..6).grep(* %% 2).map(* ** 2).tap(-> $v { @out.push($v) });
say @out; # [4 16 36]Este es el mismo vocabulario de map y grep que conoces de las listas, aplicado a valores que llegan a lo largo del tiempo. El supply hace el empuje; tu tubería da forma a lo que sale.
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Quiz — Supplies | Quiz — Transformar un supply →
💪 O ve directamente a los ejercicios de esta
sección.