Курс языка программирования Raku / Продвинутый уровень / Порядок выполнения

Фазеры

Фейзер (phaser) — это специальный блок, который выполняется автоматически в определённый момент жизни программы, а не там, где он записан в исходном коде. Вы не вызываете фейзер; вы лишь указываете, когда его код должен выполниться, именуя блок.

Наиболее распространённые фейзеры отмечают этапы жизни программы в целом:

  • BEGIN выполняется как можно раньше, пока программа ещё компилируется;
  • INIT выполняется один раз в начале выполнения, перед основным кодом;
  • END выполняется один раз в самом конце, после завершения основного кода.

Следующая программа размещает эти фейзеры среди обычных инструкций. Обратите внимание, что вывод не следует порядку строк в файле:

say 'main body';
BEGIN say 'BEGIN';
END say 'END';
INIT say 'INIT';

Программа выводит:

BEGIN
INIT
main body
END

BEGIN выполняется первым, на этапе компиляции. Затем, во время выполнения, INIT запускается перед основным телом программы. Основное тело выводит свой текст следующим, а END выполняется последним, независимо от того, где он был записан.

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

Практика

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

Упражнения

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

  1. Финальное сообщение
  2. Сначала BEGIN
  3. Порядок END

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

Порядок выполнения   |   Финальное сообщение