7.5. Definiowanie iteratora dla struktury danych
Problem
Chcemy zaimplementować metodę each
dla nowo zdefiniowanej struktury danych, chcemy też przeprowadzić nietypową iterację po istniejącej strukturze.
Rozwiązanie
Złożone struktury danych budowane są zwykle na bazie struktur podstawowych — haszów, tablic itp. — dla których metoda each
jest zaimplementowana. Dla struktury złożonej wyłącznie z elementów skalarnych oraz takich podstawowych struktur implementację metody each
można wyrazić w kategoriach implementacji tej metody dla poszczególnych struktur składowych.
Dla przykładu rozpatrzmy prostą strukturę drzewiastą. Każde drzewo składa się z pojedynczej wartości i listy jej poddrzew potomnych:
class Tree attr_reader :value def initialize(value) ...
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.