7.10. Kod inicjujący i kończący dla bloku kodowego

Problem

Przed rozpoczęciem iteracji związanej z cyklicznym wykonywaniem bloku kodowego konieczne jest jednokrotne wykonanie pewnego kodu inicjującego; analogicznie po zakończeniu iteracji należy wykonać jednokrotnie pewien kod kończący. Kod kończący powinien być wykonany także wtedy, gdy w trakcie iteracji wystąpi wyjątek. Nie można przy tym obarczać tym zadaniem aplikacji wywołującej metodę organizującą iterację.

Rozwiązanie

Wykonanie kodu inicjującego (setup) i kończącego (cleanup) można zapewnić dzięki następującej konstrukcji:

def between_setup_and_cleanup
  setup()  # kod inicjujący
  begin
   yield   # iteracja
  finally
    cleanup()  # kod kończący
  end
end

Oto konkretny przykład. W ramach iteracji ...

Get Ruby. Receptury now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.