Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Lambda’s en closures / Exercises / Een teller
Oplossing: Een teller
Hier is een mogelijke oplossing voor de taak.
Code
sub make-counter($step) {
my $n = 0;
return sub { $n += $step };
}
my &count = make-counter(10);
say count();
say count();
say count();🦋 Je kunt de broncode vinden in het bestand counter.raku.
Uitvoer
10
20
30Opmerkingen
De closure legt twee dingen uit
make-countervast: de parameter$stepen de private variabele$n. Beide blijven in leven nadatmake-counterterugkeert.Elke aanroep telt
$stepbij$nop en geeft de nieuwe som terug. Een teller die met een andere stap gebouwd is, zou met dat bedrag opschuiven.