Курс 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]Коментарі
Тіло
wheneverвиконується по разу на значення, переводить його у верхній регістр і кладе в@collected.reactчекає завершення єдиного потоку, тож на момент виконанняsayмасив містить усі три значення по порядку:[A B C].Потік значень має власні методи, схожі на спискові, тож переводити у верхній регістр можна в самому струмені, а не в тілі —
whenever Supply.from-list('a', 'b', 'c').map(*.uc) { @collected.push($_) }— і ефект той самий..mapна потоці перетворює кожне значення, коли те пропливає повз; вибір полягає лише в тому, чи перетворення належить струменеві, чи реакції.