Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Реактивное программирование / react и whenever / Блок react

Тест — react

Что выведет следующая программа?

my @got;

react {
    whenever Supply.from-list(1, 2, 3, 4, 5) {
        @got.push($_);
        done if $_ == 3;
    }
}

say @got;
1[1 2 3]
0[1 2 3 4 5]
0[3]
0[4 5]

Тело whenever собирает каждое значение, но вызывает done, как только видит 3. done закрывает блок react, поэтому supply бросается на полпути, 4 и 5 не обрабатываются, и остаётся [1 2 3].

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

Блок react   |   whenever