Raku kurss / Padziļināti / Izpildes plūsma / Bloku fāzeri / Exercises / Sakopt atstājot

Risinājums: Sakopt atstājot

Šeit ir iespējams risinājums uzdevumam.

Kods

sub work {
    LEAVE say 'Cleanup';

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

work();

🦋 Atrodiet programmu failā clean-up-on-leave.raku.

Izvade

Working
Cleanup

Komentāri

  1. Pēc Working izdrukāšanas return uzreiz iziet no apakšprogrammas, tāpēc never reached netiek izdrukāts nekad.

  2. Lai gan ķermenis tika atstāts priekšlaikus, fāzeris LEAVE pa ceļam uz āru tomēr nostrādā un izdrukā Cleanup. Tieši šī garantija padara LEAVE par pareizo vietu resursu atbrīvošanai — tas izpildās neatkarīgi no tā, kā bloks beidzas.

Kursa navigācija

Sakopt atstājot   |   Ieiet blokā