7.6. Zmiana sposobu iterowania po strukturze danych

Problem

Dana jest struktura, wykorzystująca metody modułu Enumerable, lecz iterator #each dla tej struktury działa niezgodnie z oczekiwaniami. Ponieważ wszystkie metody modułu Enumerable skonstruowane są w oparciu o metodę each, wszystkie one wydają się bezużyteczne.

Rozwiązanie

Oto konkretny przykład — prosta tablica:

array = %w{bob loves alice}
array.collect { |x| x.capitalize }
# => ["Bob", "Loves", "Alice"]

Chcemy, by w odniesieniu do tej tablicy metoda collect udostępniała elementy w kolejności od ostatniego do pierwszego, niczym hipotetyczna metoda reverse_collect:

array.collect_reverse { |x| x.capitalize }
# => ["Alice", "Loves", "Bob"]

Zdefiniowanie nowej metody reverse_collect ...

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.