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

Розв’язання: Розкладіть у два масиви

Ось одне з можливих розв’язань задачі.

Код

my @small;
my @big;

react {
    whenever Supply.from-list(4, 42, 7, 100, 15) {
        if $_ > 10 { @big.push($_) }
        else       { @small.push($_) }
    }
}

say @small;
say @big;

🦋 Знайдіть програму у файлі react-collect.raku.

Вивід

[4 7]
[42 100 15]

Коментарі

  1. Тіло whenever є звичайним кодом, тож воно може більше, ніж просто збирати, — тут воно вирішує, спрямовуючи кожне значення в @big чи @small у міру його надходження. Усередині кожного масиву значення зберігають порядок струменя.

  2. Блок react чекає завершення струменя, тож обидва масиви повні ще до друку.

Навігація курсом

Розкладіть у два масиви   |   Два whenever