我已经创建了一个具有一些特殊属性的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创建的是枚举器对象,而不是TimedEnumerator对象。
这样做的正确方法是什么?
发布于 2013-11-08 03:14:37
我可以子类化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。
https://stackoverflow.com/questions/19844223
复制相似问题