Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Итераторы / Exercises / Сумма с помощью pull-one

Решение: Сумма с помощью pull-one

Вот один из возможных вариантов решения задачи.

Код

my $it = (3, 7, 5).iterator;
my $sum = 0;

loop {
    my $v := $it.pull-one;
    last if $v =:= IterationEnd;
    $sum += $v;
}

say $sum;

🦋 Исходный код можно найти в файле sum-with-pull-one.raku.

Вывод

15

Комментарии

  1. .iterator даёт представление списка, из которого значения вытягивают, и каждый pull-one возвращает очередное число.

  2. Значение связывается через :=, а не присваивается, чтобы $v =:= IterationEnd правильно распознал конец: присваивание через = сравнивало бы контейнер, а не значение. Цикл прибавляет 3, 7 и 5, затем встречает IterationEnd и останавливается, оставив 15.

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

Сумма с помощью pull-one   |   Ленивые и бесконечные последовательности