Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Funktionale Programmierung / Lambdas und Closures / Exercises / Ein Zähler

Lösung: Ein Zähler

Hier ist eine mögliche Lösung der Aufgabe.

Code

sub make-counter($step) {
    my $n = 0;
    return sub { $n += $step };
}

my &count = make-counter(10);
say count();
say count();
say count();

🦋 Du findest den Quellcode in der Datei counter.raku.

Ausgabe

10
20
30

Kommentare

  1. Die Closure fängt zwei Dinge aus make-counter ein: den Parameter $step und die private Variable $n. Beide bleiben am Leben, nachdem make-counter zurückgekehrt ist.

  2. Jeder Aufruf addiert $step zu $n und liefert die neue Summe. Ein mit einer anderen Schrittweite gebauter Zähler würde stattdessen um diesen Betrag vorrücken.

Kursnavigation

Ein Zähler   |   Ein Multiplikator