2011-01-12 5 views
0

Ich habe Code wie dieseWie Code mit Enumerator in Ruby 1.8 ausführen?

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

und es nicht

Ich verstehe nicht funktioniert, dass der Enumerator in Ruby 1.8 als Erweiterung verfügbar ist. Wie installiere ich es? (Ich bin neu in Ruby)

+0

Ist der Tippfehler in Ihrem tatsächlichen Code vorhanden? –

+0

Karl hat es geschafft. Es gibt einen Tippfehler in Zeile 2 (my_enum, nicht my_emum). Enumerator ist in Ruby eingebaut, dieser Code wird funktionieren. –

+0

lol, ich habe diesen Tippfehler nicht gesehen, das passiert, wenn Sie einfach einen Code kopieren und versuchen, ihn auszuführen;) – IAdapter

Antwort

1

Wie in this answer auf eine andere Frage erwähnt, in Ruby 1.8.6, können Sie

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

tun, aber ich weiß nicht, ob es Sie erlauben my_enum.next zu tun.

Ich denke, die Dokumentation ist bei http://ruby-doc.org/stdlib/libdoc/enumerator/rdoc/, aber es scheint im Moment zu sein.

2

Wenn ich den Tippfehler beheben, funktioniert es gut. IRB Sitzung folgt.

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

in

Getestet
>> VERSION 
=> "1.8.7" 
2

Welche Version von Ruby 1.8 sind Sie? Das ist wichtig.

(Beachten Sie auch, dass Sie einen Tippfehler in "my_emum" haben).

In Ruby 1.8.6 gibt es keine "nächste" Methode für enums, nur "jeder". Beispiel:

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

Ruby 1.8.7 In "next" wird unterstützt.