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 the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.