9.4. Moduł Enumerable — zaimplementuj jedną metodę, dostaniesz 22 za darmo
Problem
Chcemy wyposażyć tworzoną klasę we wszystkie użyteczne mechanizmy iteracji typowe dla tablic języka Ruby (sort
, detect
, inject
itp.); niestety, nasza klasa nie może być subklasą klasy Array
. Czy musimy wszystkie te iteratory implementować samodzielnie?
Rozwiązanie
Na szczęście nie. Wystarczy zaimplementować dla nowej klasy metodę each
i dołączyć do tej klasy moduł Enumerable
. Wszystkie 22 implementowane przez niego metody iteracyjne funkcjonują na bazie metody each
odnośnej klasy.
Poniżej definiowana jest klasa przechowująca wewnętrznie listę tablic. Dzięki odpowiednio skonstruowanej metodzie each
lista ta może być przez użytkownika traktowana jako pojedyncza ...
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.