Курс Raku / Об’єкти, введення-виведення та винятки / Введення та виведення / Стандартні потоки / Вправи / Виведення та помилки
Розв’язання: Виведення та помилки
Ось один із можливих варіантів розв’язання задачі.
Код
my @data = 3, 5, 7;
my $sum = 0;
for @data -> $n {
$sum += $n;
$*ERR.say("running total: $sum");
}
$*OUT.say($sum);🦋 Вихідний код можна знайти у файлі output-and-error.raku.
Вивід
На екрані з’являються обидва потоки — накопичені суми, а потім остаточний результат:
running total: 3
running total: 8
running total: 15
15Якщо відкинути стандартний потік помилок, лишається тільки справжній вивід:
$ raku output-and-error.raku 2>/dev/null
15Коментарі
$*OUTта$*ERRє дескрипторами стандартного виводу та стандартного потоку помилок. Кожен має власний методsay.Кожен прохід циклу додає наступне число й пише накопичену суму до
$*ERR; до$*OUTіде лише остаточна сума. На екрані поступ і результат виглядають однаково, але мандрують різними потоками, — саме тому перенаправлення стандартного потоку помилок через2>/dev/nullлишає позаду тільки остаточні15.