Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Реактивное программирование / Живые supply и supply по требованию / Exercises / Позднее подключение
Решение: Позднее подключение
Вот один из возможных вариантов решения задачи.
Код
my $supplier = Supplier.new;
my @got;
$supplier.emit(1);
$supplier.Supply.tap(-> $v { @got.push($v) });
$supplier.emit(2);
$supplier.emit(3);
say @got;🦋 Исходный код можно найти в файле a-live-feed.raku.
Вывод
[2 3]Комментарии
Supplier— это передающая сторона, а подключаются к его.Supply. Живой supply вещает только тем подключениям, которые слушают в момент каждой выдачи.emit(1)происходит до того, как появилось хоть одно подключение, поэтому это значение потеряно — как если включить радиостанцию после того, как песня уже отзвучала. Перехвачены только2и3, выданные после подключения, что даёт[2 3].