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

Розв’язання: Лічильник

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

Код

sub make-counter($step) {
    my $n = 0;
    return sub { $n += $step };
}

my &count = make-counter(10);
say count();
say count();
say count();

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

Вивід

10
20
30

Коментарі

  1. Замикання захоплює з make-counter дві речі: параметр $step та приватну змінну $n. Обидві залишаються живими після того, як make-counter повернувся.

  2. Кожен виклик додає $step до $n і повертає нову суму. Лічильник, побудований з іншим кроком, просувався б натомість на цю величину.

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

Лічильник   |   Множник