7.2. Tworzenie metod wykorzystujących bloki kodowe

Problem

Chcemy stworzyć metodę współpracującą z blokiem kodowym, w sposób podobny do metod Array#each, Fixnum#upto i innych wbudowanych metod tego rodzaju.

Rozwiązanie

Tworzenie metod współpracujących z blokami kodowymi nie wymaga żadnych szczególnych zabiegów — z każdą z metod można związać taki blok. W ciele metody wywołanie tego bloku odbywa się za pomocą słowa kluczowego yield:

def call_twice puts "Zaraz wywołam blok kodowy." yield puts "Za chwilę ponownie wywołam blok kodowy." yield end call_twice { puts "WŁAŚNIE WYKONUJE SIĘ BLOK KODOWY." } # Zaraz wywołam blok kodowy. # WŁAŚNIE WYKONUJE SIĘ BLOK KODOWY. # Za chwilę ponownie wywołam blok kodowy. # WŁAŚNIE WYKONUJE SIĘ BLOK KODOWY. ...

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.