繁体   English   中英

Rubinius:如何生成枚举器作为官方方式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM