我有这个简单的代码来生成一个惰性数组:
lazy_arr = Enumerator.new { |y|
i = 1
loop {
y << i
i+=1
}
}
p lazy_arr.take(5)
在官方 Ruby 1.9.3 中,输出是[1,2,3,4,5]
,这就是我想要的。
但是在 Rubinius 中,它给出了错误并告诉我找不到 Enumerator 常量。
所以我查了一下,发现 Enumerator 定义在Enumerable
module 而不是kernel
,当它生成时,它需要括号中的几个参数:
http ://rubydoc.info/github/evanphx/rubinius/master/Enumerable/Enumerator
我试图更改Enumerator.new
为Enumerable::Enumerator.new
, or include Enumerable
, 都不起作用,因为它需要更多参数。
如何在 Rubinius 中执行上述示例?有什么办法可以让代码在官方和 Rubinius 中都能正常工作?