gpt4 book ai didi

ruby - Rubinius:如何以官方方式生成枚举器?

转载 作者:数据小太阳 更新时间:2023-10-29 07:57:06 25 4
gpt4 key购买 nike

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

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.newinclude 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com