Cursus Raku / Objecten, in- en uitvoer en excepties / Invoer en uitvoer / Standaardstromen / Exercises / Uitvoer en fouten
Oplossing: Uitvoer en fouten
Hier is een mogelijke oplossing voor de taak.
Code
my @data = 3, 5, 7;
my $sum = 0;
for @data -> $n {
$sum += $n;
$*ERR.say("running total: $sum");
}
$*OUT.say($sum);🦋 Je kunt de broncode vinden in het bestand output-and-error.raku.
Uitvoer
Op het scherm verschijnen beide stromen — de tussenstanden, dan het eindresultaat:
running total: 3
running total: 8
running total: 15
15Als de standaardfout weggegooid wordt, blijft alleen de echte uitvoer over:
$ raku output-and-error.raku 2>/dev/null
15Opmerkingen
$*OUTen$*ERRzijn de handles voor de standaarduitvoer en de standaardfout. Elk heeft een eigen methodesay.Elke ronde van de lus telt het volgende getal op en schrijft de tussenstand naar
$*ERR; alleen de eindsom gaat naar$*OUT. Op het scherm lijken de voortgang en het resultaat op elkaar, maar ze reizen door verschillende stromen — en daarom laat de standaardfout wegleiden met2>/dev/nullalleen de afsluitende15over.