首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Enumerator的特定子类包装数组?

如何使用Enumerator的特定子类包装数组?
EN

Stack Overflow用户
提问于 2013-11-08 02:51:43
回答 1查看 272关注 0票数 1

我已经创建了一个具有一些特殊属性的Enumerator子类(即它知道它的元素是Time对象):

代码语言:javascript
复制
class TimedEnumerator < Enumerator
  ...some time-specific methods...
end

给定一个Time对象数组,如何生成TimedEnumerator?我的第一个想法是简单地使用::new方法,但这会生成一个弃用警告:

代码语言:javascript
复制
>> TimedEnumerator.new(array)
(irb):12: warning: Enumerator.new without a block is deprecated; use Object#to_enum

当然,array.to_enum创建的是枚举器对象,而不是TimedEnumerator对象。

这样做的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2013-11-08 03:14:37

我可以子类化Enumerator,如下所示:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19844223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档