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

Решение: Счётчик

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

Код

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 и возвращает новый итог. Счётчик, построенный с другим шагом, продвигался бы на другую величину.

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

Счётчик   |   Умножитель