Я создал подкласс Enumerator с несколькими специальными свойствами (т.е. он знает, что его элементы являются объектами времени):
class TimedEnumerator < Enumerator
...some time-specific methods...
end
Учитывая массив объектов Time, как создать TimedEnumerator? Моя первая мысль заключалась в том, чтобы просто использовать метод ::new, но это генерирует предупреждение об устаревании:
>> TimedEnumerator.new(array)
(irb):12: warning: Enumerator.new without a block is deprecated; use Object#to_enum
И, конечно же, array.to_enum
создает объект Enumerator, а не объект TimedEnumerator.
Как правильно это сделать?
Object
. Я думаю, что более простой способ сделать это - обернуть перечислитель в класс декоратора, который реализует ваши методы, зависящие от времени, но все же делегирует обратно перечислителю для стандартного поведения. - person Zach Kemp   schedule 07.11.2013