Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación reactiva / react y whenever / Exercises / Mayúsculas con react

Solución: Mayúsculas con react

Aquí tienes una posible solución para la tarea.

Código

my @collected;

react {
    whenever Supply.from-list('a', 'b', 'c') {
        @collected.push($_.uc);
    }
}

say @collected;

🦋 Puedes encontrar el código fuente en el archivo react-upcase.raku.

Salida

[A B C]

Comentarios

  1. El cuerpo del whenever se ejecuta una vez por valor, pasándolo a mayúsculas y añadiéndolo a @collected.

  2. react espera a que el único supply termine, así que cuando se ejecuta el say el array ya contiene los tres valores en orden: [A B C].

  3. Un supply tiene sus propios métodos al estilo de las listas, así que podrías pasar a mayúsculas dentro del flujo en lugar de en el cuerpo — whenever Supply.from-list('a', 'b', 'c').map(*.uc) { @collected.push($_) } — y el efecto es el mismo. .map sobre un supply transforma cada valor según pasa; la elección es simplemente si la transformación pertenece al flujo o a la reacción.

Mayúsculas con react   |   Reparta en dos arrays