Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Реактивное программирование / react и whenever / Exercises / Верхний регистр с 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дожидается окончания единственного supply, поэтому к моменту выполненияsayмассив содержит все три значения по порядку:[A B C].У supply есть собственные списочные методы, поэтому переводить в верхний регистр можно не в теле, а прямо в потоке —
whenever Supply.from-list('a', 'b', 'c').map(*.uc) { @collected.push($_) }, — и результат будет тот же..mapу supply преобразует каждое значение на лету; вопрос лишь в том, к чему относится преобразование — к потоку или к реакции.