Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Lambda’s en closures / Closures

Quiz — Closures

Wat drukt het volgende programma af?

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

De teruggegeven subroutine sluit om $total heen, dus delen alle drie de aanroepen dezelfde variabele. De eerste twee aanroepen brengen die op 30; de derde telt er 5 bij op en drukt de lopende som af, 35.

Cursusnavigatie

Closures   |   Een teller