Курс языка программирования 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]

Комментарии

  1. Supplier — это передающая сторона, а подключаются к его .Supply. Живой supply вещает только тем подключениям, которые слушают в момент каждой выдачи.

  2. emit(1) происходит до того, как появилось хоть одно подключение, поэтому это значение потеряно — как если включить радиостанцию после того, как песня уже отзвучала. Перехвачены только 2 и 3, выданные после подключения, что даёт [2 3].

Навигация по курсу

Позднее подключение   |   Сумма живого потока