Курс по Raku / Напреднали / Управление на потока

Фейзъри

Phaser е специален блок, който се изпълнява автоматично в определен момент от живота на програмата, а не там, където се появява в изходния код. Вие не извиквате phaser; само казвате кога кодът му трябва да се изпълни, като именувате блока.

Най-често използваните phasers отбелязват етапи от програмата като цяло:

  • BEGIN се изпълнява възможно най-рано, докато програмата все още се компилира;
  • INIT се изпълнява веднъж в началото на изпълнението, преди основния код;
  • END се изпълнява веднъж в самия край, след като основният код е завършил.

Следващата програма поставя тези phasers сред обикновени инструкции. Забележете, че изходът не следва реда на редовете във файла:

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. Начало първо
  3. Редът на END

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

Управление на потока   |   Финално съобщение