Как запустить код с перечислителем в Ruby 1.8? - PullRequest
0 голосов
/ 13 января 2011

У меня есть такой код

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

и это не работает

Я понимаю, что перечислитель доступен в Ruby 1.8 как расширение. Как его установить? (Я новичок в ruby)

Ответы [ 3 ]

2 голосов
/ 13 января 2011

Какую версию 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 , поддерживается "next".

2 голосов
/ 13 января 2011

Если я исправлю опечатку, она будет работать нормально. Далее следует сессия IRB.

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

Проверено в

>> VERSION
=> "1.8.7"
1 голос
/ 13 января 2011

Как уже упоминалось в этот ответ на другой вопрос, в Ruby 1.8.6 вы можете сделать

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

Но я не знаю, позволит ли это вам сделать my_enum.next.

Я думаю, что документация находится по адресу http://ruby -doc.org / stdlib / libdoc / enumerator / rdoc / , но, похоже, сейчас она недоступна.

...