Курс по Raku / Напреднали / Управление на потока / Фейзъри за блокове / Exercises / Почистване при напускане
Решение: Почистване при напускане
Ето едно възможно решение на задачата.
Код
sub work {
LEAVE say 'Cleanup';
say 'Working';
return;
say 'never reached';
}
work();🦋 Изходният код на тази програма можете да намерите във файла clean-up-on-leave.raku.
Изход
Working
CleanupКоментари
След като
Workingбъде отпечатано,returnизлиза от подпрограмата веднага, така чеnever reachedникога не се отпечатва.Въпреки че тялото е напуснато преждевременно, фазерът
LEAVEвсе пак се задейства при излизане и отпечатваCleanup. Тази гаранция е точно причинатаLEAVEда е правилното място за освобождаване на ресурси — той се изпълнява независимо как завършва блокът.