7.1. Tworzenie i wywoływanie bloku kodowego

Problem

Chcemy zamknąć pewien fragment kodu w języku Ruby w formę bloku, który będziemy później wielokrotnie wywoływać.

Rozwiązanie

W trakcie dotychczasowej lektury wielokrotnie spotykaliśmy się z blokami zamkniętymi w nawiasy klamrowe. Bloki takie nie są jednak bytami samoistnymi:

aBlock = { |x| puts x }                 # ŹLE!
# SyntaxError: compile error

W języku Ruby bloki mają rację bytu wyłącznie jako argumenty wywoływania metod. Istnieje jednak kilka sposobów przekształcania bloków w obiekty — najczęściej wykorzystywanym i zalecanym jest użycie metody lambda[46]:

aBlock = lambda { |x| puts x }          # DOBRZE

W celu wywołania bloku, z którego utworzono obiekt, należy użyć metody call:

aBlock.call "Witajcie!" ...

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.