Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Реактивне програмування / react і whenever / Вправи / Верхній регістр з react

Розв’язання: Верхній регістр з react

Ось одне з можливих розв’язань задачі.

Код

my @collected;

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

say @collected;

🦋 Знайдіть програму у файлі react-upcase.raku.

Вивід

[A B C]

Коментарі

  1. Тіло whenever виконується по разу на значення, переводить його у верхній регістр і кладе в @collected.

  2. react чекає завершення єдиного потоку, тож на момент виконання say масив містить усі три значення по порядку: [A B C].

  3. Потік значень має власні методи, схожі на спискові, тож переводити у верхній регістр можна в самому струмені, а не в тілі — whenever Supply.from-list('a', 'b', 'c').map(*.uc) { @collected.push($_) } — і ефект той самий. .map на потоці перетворює кожне значення, коли те пропливає повз; вибір полягає лише в тому, чи перетворення належить струменеві, чи реакції.

Навігація курсом

Верхній регістр з react   |   Розкладіть у два масиви