Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Функционално програмиране / Ламбди и затваряния / Затваряния
Тест — Затваряния
Какво отпечатва следната програма?
sub make-acc {
my $total = 0;
return sub ($x) { $total += $x };
}
my &add = make-acc;
add(10);
add(20);
say add(5);| 0 | 5 |
| 0 | 30 |
| 1 | 35 |
| 0 | 0 |
Върнатата подпрограма се затваря върху $total, така че и
трите извиквания споделят една и съща променлива. Първите две я довеждат
до 30; третото добавя 5 и отпечатва текущата
сума — 35.
Навигация в курса
← Затваряния | Брояч →