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.