作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有这个简单的代码来生成惰性数组:
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
我尝试将 Enumerator.new
更改为 Enumerable::Enumerator.new
或 include Enumerable
,但都不起作用,因为它需要更多参数.
如何在 Rubinius 中执行上述示例?有什么方法可以使代码在官方和 Rubinius 中都能正常工作吗?
最佳答案
您在 1.8 模式下使用 Rubinius,它在全局命名空间中没有 Enumerator。请在 1.9 模式下使用 Rubinius,然后该示例可以正常工作。您可以通过在启动 Rubinius 时传递 -X19 或设置 RBXOPT=-X19 来使用 1.9。
也可以在编译期间使用 configure 将 1.9 模式设置为默认模式。
关于ruby - Rubinius:如何以官方方式生成枚举器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164243/
我是一名优秀的程序员,十分优秀!