Курс языка программирования Raku / Продвинутый уровень / Порядок выполнения
Фазеры
Фейзер (phaser) — это специальный блок, который выполняется автоматически в определённый момент жизни программы, а не там, где он записан в исходном коде. Вы не вызываете фейзер; вы лишь указываете, когда его код должен выполниться, именуя блок.
Наиболее распространённые фейзеры отмечают этапы жизни программы в целом:
BEGINвыполняется как можно раньше, пока программа ещё компилируется;INITвыполняется один раз в начале выполнения, перед основным кодом;ENDвыполняется один раз в самом конце, после завершения основного кода.
Следующая программа размещает эти фейзеры среди обычных инструкций. Обратите внимание, что вывод не следует порядку строк в файле:
say 'main body';
BEGIN say 'BEGIN';
END say 'END';
INIT say 'INIT';Программа выводит:
BEGIN
INIT
main body
ENDBEGIN выполняется первым, на этапе компиляции. Затем, во
время выполнения, INIT запускается перед основным телом
программы. Основное тело выводит свой текст следующим, а
END выполняется последним, независимо от того, где он был
записан.
Типичное использование END — вывод итоговой информации
или очистка ресурсов перед завершением программы, а BEGIN
удобен для работы, которая должна произойти раньше всего остального.
Практика
Пройдите 1 тест по содержанию этой темы.
Упражнения
В этом разделе 3 упражнения. Прежде чем приступать к практике, изучите все темы раздела.