首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rubinius:如何生成枚举器作为官方方式?

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

Stack Overflow用户
提问于 2012-04-16 01:13:48
回答 2查看 158关注 0票数 3

我有一段简单的代码来生成一个惰性数组:

代码语言:javascript
复制
lazy_arr = Enumerator.new { |y|
    i = 1
    loop {
        y << i
        i+=1
    }
}
p lazy_arr.take(5)

在官方Ruby1.9.3中,输出是[1,2,3,4,5],这正是我想要的。

但在Rubinius中,它给出了错误,并告诉我找不到枚举常量。

所以我查找了一下,发现枚举器是在Enumerable模块中定义的,而不是在kernel中定义的,并且在生成时,它需要在括号中包含几个参数:http://rubydoc.info/github/evanphx/rubinius/master/Enumerable/Enumerator

我尝试将Enumerator.new更改为Enumerable::Enumerator.newinclude Enumerable,但两者都不起作用,因为它需要更多参数。

我如何在Rubinius中做上面的例子?有没有办法让代码同时在官方和Rubinius中工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-16 04:48:47

您在1.8模式下使用Rubinius,它在全局名称空间中没有枚举器。请在1.9模式下使用Rubinius,然后示例就可以正常工作了。您可以通过在启动Rubinius时传递-X19或设置RBXOPT=-X19来使用1.9。

也可以在编译时使用configure将1.9模式设为默认模式。

票数 3
EN

Stack Overflow用户

发布于 2012-04-16 04:10:47

听起来像Rubinius中的bug/缺少类。在github上打开一个问题,它将被添加。或者深入挖掘并发送一个拉取请求!

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

https://stackoverflow.com/questions/10164243

复制
相关文章

相似问题

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