0

我有这样的代码

my_enum = [1,2].to_enum
puts my_emum.next

它不起作用

我知道枚举器在 Ruby 1.8 中作为扩展可用。如何安装它?(我是红宝石新手)

4

3 回答 3

2

如果我修正错字,它工作正常。irb 会议如下。

>> my_enum = [1,2].to_enum
=> #<Enumerable::Enumerator:0xb79dd700>
>> puts my_enum.next
1
>> puts my_enum.next
2

经测试

>> VERSION
=> "1.8.7"
于 2011-01-12T22:08:03.173 回答
2

您正在运行哪个版本的 ruby​​ 1.8?这很重要。

(另请注意,您在“my_emum”中有错字)。

Ruby 1.8.6中,枚举没有“下一个”方法,只有“每个”。例子:

my_enum = [1,2].to_enum
my_enum.each do |e|
  puts e
end

Ruby 1.8.7中,支持“下一步”。

于 2011-01-12T22:10:05.107 回答
1

this answer to a different question中所述,在Ruby 1.8.6中,您可以这样做

require 'enumerator'
6.enum_for(:times).map {...}

但我不知道它是否允许你这样做my_enum.next

我认为文档位于http://ruby-doc.org/stdlib/libdoc/enumerator/rdoc/,但现在似乎已关闭。

于 2011-01-12T22:42:42.413 回答