Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Funktionale Programmierung / Lambdas und Closures / Closures

Quiz — Closures

Was gibt das folgende Programm aus?

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

Die zurückgegebene Subroutine schließt sich um $total, alle drei Aufrufe teilen sich also dieselbe Variable. Die ersten beiden Aufrufe bringen sie auf 30; der dritte addiert 5 und gibt die laufende Summe aus, 35.

Kursnavigation

Closures   |   Ein Zähler