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.