我创建了一个Enumerator的子类,它有一些特殊属性(即它知道它的元素是Time对象):
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对象。
这样做的正确方法是什么?
答案 0 :(得分:1)
我能够将Enumerator子类化为:
class TimedEnumerator < Enumerator
def initialize(array)
super() do |array|
#your logic
end
end
end
TimedEnumerator.new(array)
#=> <TimedEnumerator: #<Enumerator::Generator:0x007ff4cb89a9f0>:each>
从此处找到super()
诀窍:ArgumentError in #new, Subclassing Enumerator。