不使用现有迭代器返回枚举器

时间:2013-10-10 13:16:26

标签: ruby arrays iterator wrapper enumerator

如何在不使用现有数组迭代器的情况下从数组包装器返回Enumerator?

class MyArray

  def initialize
   @inner = []
  end

  def each
    index = 0
    while index < @inner.size
      yield @inner[index] if block_given?
      index += 1
    end
  end
end

我无法弄清楚如何避免在@inner.each方法的末尾调用each之类的内容。

1 个答案:

答案 0 :(得分:1)

假设:

@inner = [1, 2, 3]

代码

@inner.to_enum

将返回一个枚举器。

enum = @inner.to_enum
enum.each{|e| p e}
# => 1, 2, 3