Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Реактивное программирование / react и whenever
Supply, объявленные снаружи
Все whenever до сих пор создавали свой supply прямо в
заголовке — whenever Supply.from-list(...). Для короткого
примера это читается неплохо, но в настоящих программах источник событий
редко оказывается под рукой ровно в этом месте. Чаще supply создаётся
где-то ещё — его возвращает функция, производит Supplier
или передаёт вам сокет или таймер, — и приходит он как обычная
переменная. Whenever с тем же успехом следит и за
именованным supply:
my $sensors = Supply.from-list(18, 21, 19);
my $messages = Supply.from-list('hi', 'bye');
react {
whenever $sensors {
say "temperature: $_";
}
whenever $messages {
say "message: $_";
}
}Программа печатает:
temperature: 18
temperature: 21
temperature: 19
message: hi
message: byeТак что читайте whenever $sensors { … } как «всякий раз,
когда supply $sensors — откуда бы он ни взялся — выдаёт
значение, выполняй это тело». Виденный ранее вариант с
whenever Supply.from-list(...) внутри — лишь частный
случай, когда источник создаётся тут же на месте.
Если эта форма — внешний блок со вложенными блоками — вам что-то
напоминает, вы правы: следующая
страница сравнивает её с given/when.
Навигация по курсу
← Тест — whenever и done | whenever и when →
💪 Или перейдите сразу к упражнениям этого
раздела.