Курс Raku / Розширені / Порядок виконання / Блокові фейзери / Вправи / Прибирання при виході
Розв’язання: Прибирання при виході
Ось можливий розв’язок завдання.
Код
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правильним місцем для звільнення ресурсів — він запускається незалежно від того, як завершується блок.