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