Курс языка программирования 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.