Cursus Raku / Addendum 🆕 / Cursus et functiones / Subprogrammata et stilus functionalis / Exercises / Accumulator crescens
Solutio: Accumulator crescens
Ecce solutio possibilis huius exercitationis.
Codex
sub make-accumulator($start) {
my $total = $start;
return -> $amount { $total += $amount };
}
my $acc = make-accumulator(100);
say $acc(10);
say $acc(25);
say $acc(-5);🦋 Inveni codicem fontem in archivo accumulator.raku.
Exitus
110
135
130Commentarii
Blocus redditus
$totalclaudit: illa variabilis inter vocationes superstes est, itaque unaquaeque vocatio summam vocationis prioris meminit.$total += $amountet summam currentem renovat et illam reddit, quod est id quod unumquodquesayimprimit:110, deinde135, deinde130.Alternativa summam intra ipsum blocum servat, in variabili
state. Dissimilismyordinario, variabilisstatesemel tantum initiatur — primo tempore quo blocus currit — et deinde valorem suum per vocationes posteriores servat:sub make-accumulator($start) { return -> $amount { state $total = $start; $total += $amount }; } my $acc = make-accumulator(100); say $acc(10); say $acc(25); say $acc(-5);
Unaquaeque vocatio ipsius
make-accumulatorblocum novum cum propriostate $totalproducit, itaque accumulatores separati independentes manent — et clausura super$startadhuc unicuique valorem initialem proprium praebet.