Курс языка программирования 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подходящим местом для освобождения ресурсов — он выполняется независимо от того, как завершился блок.