Cursus Raku / Addendum 🆕 / Werken met gegevens / Lijsten, arrays en hashes / Exercises / Lopende totalen
Oplossing: Lopende totalen
Hier is een mogelijke oplossing voor de taak.
Code
my @numbers = 2, 4, 6, 8;
my $sum = 0;
my @totals = @numbers.map({ $sum += $_ });
say @totals;🦋 Je kunt de broncode vinden in het bestand running-totals.raku.
Uitvoer
[2 6 12 20]Opmerkingen
Het blok houdt een lopende
$sumbij in een variabele buiten de map. Elke aanroep telt het huidige element erbij op en geeft de nieuwe som terug, dus is de gemapte lijst de reeks deelsommen.Raku heeft dit ingebouwd. De driehoeksreductie
[\+]bewaart elke deelsom, dus is de hele oplossing één enkele uitdrukking:my @numbers = 2, 4, 6, 8; say [\+] @numbers; # (2 6 12 20)
Ze geeft een
Seqterug, dus haar gist gebruikt haakjes —(2 6 12 20)— in plaats van de[2 6 12 20]van de array, maar de getallen zijn dezelfde.