Курс по 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.

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

Затваряния   |   Брояч