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

Навігація курсом

Замикання   |   Лічильник