[英]Rubinius: how to generate enumerator as the official way?
我有这个简单的代码来生成一个惰性数组:
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
模块而不是kernel
定义,当它生成时,它需要括号中的一些参数: http : //rubydoc.info/github/evanphx/rubinius/master/Enumerable/枚举
我试图将Enumerator.new
更改为Enumerable::Enumerator.new
,或者include Enumerable
,因为它需要更多参数,所以无法工作。
我如何在Rubinius中做上面的例子? 有没有什么方法可以让代码在官方和Rubinius中运行?
你在1.8模式下使用Rubinius,它在全局命名空间中没有Enumerator。 请在1.9模式下使用Rubinius,然后示例工作正常。 你可以在启动Rubinius时通过-X19使用1.9,或者设置RBXOPT = -X19。
在编译期间,还可以使用configure将1.9模式设置为默认模式。
听起来像Rubinius中的一个错误/缺少类。 在github上打开一个问题,它会被添加。 或者挖掘并发送拉动请求!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.