7.4. Bloki kodowe jako domknięcia: odwołania do zmiennych zewnętrznych w treści bloku kodowego

Problem

Chcemy współdzielić dostęp do zmiennych między metodami, chcemy także definiować bloki kodowe z udziałem zmiennych zewnętrznych.

Rozwiązanie

Ruby gwarantuje poprawną realizację odwołań do zmiennych w treści bloków kodowych. Oto metoda powodująca dodawanie pewnej wartości do każdego elementu tablicy.

def add_to_all(array, number)
  array.collect { |x| x + number }
end

add_to_all([1, 2, 3], 10)                # => [11, 12, 13]

W ciele metody Enumerable#collect zmienna number jest niewidoczna, jest jednak dostępna w treści bloku kodowego, ponieważ była dla niego widoczna w momencie jego definiowania.

Dyskusja

Blok kodowy języka Ruby jest domknięciem ...

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.