Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Ввод и вывод

Стандартные потоки

У всякой программы есть три стандартных потока, связывающих её с окружением: стандартный вывод, стандартный поток ошибок и стандартный ввод. Raku делает их доступными через три специальные переменные: $*OUT, $*ERR и $*IN.

В стандартный вывод вы писали всё это время: say и print отправляют свой текст в $*OUT.

say 'Hello'; # уходит в стандартный вывод

Диагностические сообщения и сообщения об ошибках держат отдельно, в стандартном потоке ошибок, чтобы они не подмешивались к настоящему выводу программы. Туда пишет процедура note:

note 'Something looks wrong'; # уходит в стандартный поток ошибок

Такое разделение полезно, потому что эти два потока можно перенаправлять независимо — например, сохранить вывод программы в файл, продолжая видеть сообщения об ошибках на экране.

Писать в потоки можно и напрямую. И $*OUT, и $*ERR — это дескрипторы со своими методами say и print:

$*OUT.say('a normal line');
$*ERR.say('a diagnostic line');

Третий поток, $*IN, — это стандартный ввод. С ним вы косвенно встречались через prompt, который читает из него строку. К чтению ввода мы вернёмся, когда будем рассматривать файловые дескрипторы, потому что $*IN — такой же дескриптор, как и открытый файл.

Практика

Пройдите 1 тест по содержанию этой темы.

Упражнения

В этом разделе 3 упражнения. Прежде чем приступать к практике, изучите все темы раздела.

  1. Вывод и ошибки
  2. Предупреждение через note
  3. Вывод без перевода строки

Навигация по курсу

Ввод и вывод   |   Вывод и ошибки