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

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

Почистване при напускане   |   Влизане в блок