Курс 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Коментарі
Замикання захоплює з
make-counterдві речі: параметр$stepта приватну змінну$n. Обидві залишаються живими після того, якmake-counterповернувся.Кожен виклик додає
$stepдо$nі повертає нову суму. Лічильник, побудований з іншим кроком, просувався б натомість на цю величину.