Курс языка программирования Raku / Продвинутый уровень / Порядок выполнения / Фазеры блоков / Exercises / Очистка при выходе

Решение: Очистка при выходе

Вот возможное решение задачи.

Код

sub work {
    LEAVE say 'Cleanup';

    say 'Working';
    return;
    say 'never reached';
}

work();

🦋 Исходный код можно найти в файле clean-up-on-leave.raku.

Вывод

Working
Cleanup

Комментарии

  1. После того как напечатано Working, return немедленно завершает подпрограмму, поэтому never reached никогда не печатается.

  2. Несмотря на досрочный выход из тела, фазер LEAVE всё равно срабатывает при выходе и печатает Cleanup. Именно эта гарантия делает LEAVE подходящим местом для освобождения ресурсов — он выполняется независимо от того, как завершился блок.

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

Очистка при выходе   |   Вход в блок