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.