[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

does Object#to_enum exist?

Dan Zwell

4/26/2007 7:46:00 AM

Hi, all.

I saw someone post a snippet of code that turned an object (with some
sort of "each" method) into an enumerable. It looked really neat, until
I tried:

>> "abcdef".to_enum(:each_byte)
NoMethodError: undefined method `to_enum' for "abcdef":String
from (irb):1
>>

I looked it up and ri seems to think I have Object#to_enum. The
underlying code is c, so frankly, I don't understand it. Even running
the examples from the documentation or looking at Object.new.methods, I
see nothing about this elusive method. Does anybody have any insight?
(I'm using ruby 1.8.6.)

Thanks,
Dan

1 Answer

Stefano Crocco

4/26/2007 8:14:00 AM

0

Alle giovedì 26 aprile 2007, Dan Zwell ha scritto:
> Hi, all.
>
> I saw someone post a snippet of code that turned an object (with some
> sort of "each" method) into an enumerable. It looked really neat, until
>
> I tried:
> >> "abcdef".to_enum(:each_byte)
>
> NoMethodError: undefined method `to_enum' for "abcdef":String
> from (irb):1
>
>
> I looked it up and ri seems to think I have Object#to_enum. The
> underlying code is c, so frankly, I don't understand it. Even running
> the examples from the documentation or looking at Object.new.methods, I
> see nothing about this elusive method. Does anybody have any insight?
> (I'm using ruby 1.8.6.)
>
> Thanks,
> Dan

You need to require 'enumerator'. Doing this will result in the to_enum method
to be added to the Kernel module and to class Object, which mixes Kernel in.
For example

require 'enumerator'

"abcdef".to_enum(:each_byte).each{|b| puts b.chr}
a
b
c
d
e
f

I hope this helps

Stefano