Курс языка программирования Raku / Продвинутый уровень / Контейнеры / Специальные и динамические переменные
Встроенные специальные переменные
Raku предоставляет набор предопределённых переменных. Большинство из
них динамические (с твигилом *), поэтому — как вы
видели на примере динамических
переменных — вы можете читать их где угодно и даже перекрывать их
для определённой области видимости. Вот те из них, которые вам
понадобятся чаще всего.
Стандартные потоки
Ввод и вывод проходят через три динамические переменные:
$*OUT (стандартный вывод), $*ERR (стандартный
поток ошибок) и $*IN (стандартный ввод). say и
print пишут в $*OUT; чтобы отправить текст в
стандартный поток ошибок, вызовите метод у $*ERR:
$*OUT.say('normal output'); # goes to standard output
$*ERR.say('a diagnostic'); # goes to standard errorПоскольку эти переменные динамические, перенаправление
$*OUT в блоке направляет вывод всего, что вызывается внутри
этого блока, в новое место назначения — без изменения какого-либо
кода.
Программа и её процесс
Несколько переменных описывают саму запущенную программу:
say $*PROGRAM-NAME; # the path of the script being run
say $*PID; # the process id of this program
say $*CWD; # the current working directoryИх значения меняются от запуска к запуску, поэтому фиксированный вывод здесь не показан.
Командная строка и окружение
Аргументы и окружение поступают в два готовых контейнера:
@*ARGS— список аргументов командной строки (те же, которые получает подпрограммаMAIN)%*ENV— переменные окружения в виде хэша
say @*ARGS.elems; # how many arguments were passed
say %*ENV<HOME>; # the value of the HOME environment variableЭти встроенные переменные избавляют вас от необходимости настраивать
ту же информацию вручную. А поскольку они динамические и ищутся по стеку
вызовов, любую встроенную переменную с $* можно перекрыть
для области видимости точно так же, как и собственную переменную с
$*.
Помимо этих динамических переменных, в Raku также есть встроенные
переменные времени компиляции с твигилом ? —
$?FILE и $?LINE — с которыми вы уже
познакомились на странице о твигилах.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Тест — Динамические переменные | Тест — Специальные переменные →
💪 Или перейдите сразу к упражнениям этого
раздела.