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

Тест — Замыкания

Что выведет следующая программа?

sub make-acc {
    my $total = 0;
    return sub ($x) { $total += $x };
}

my &add = make-acc;
add(10);
add(20);
say add(5);
05
030
135
00

Возвращаемая подпрограмма замыкается на $total, поэтому все три вызова используют одну и ту же переменную. Первые два доводят её до 30; третий прибавляет 5 и печатает накопленный итог — 35.

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

Замыкания   |   Счётчик