Enumerator of what?

Any way to ask an Enumerator what the underlying object it is
enumerating for is? Eg.

  e = Enumerator.new([1,2,3], :each)
  e.some_method #=> [1,2,3]

Not as far as I know,

but this patch could do it if you really need it

--- enumerator.c 2009-04-19 15:33:31.000000000 +0200
+++ enumerator-with-obj-access.c 2009-07-18 18:02:33.000000000 +0200
@@ -537,6 +537,12 @@
     return v;
}

+static VALUE
+enumerator_get_object( VALUE obj )
+{
+ return enumerator_ptr( obj )->obj;
+}

···

+
/*
  * call-seq:
  * e.rewind => e
@@ -788,6 +794,7 @@
     rb_define_method(rb_cEnumerator, "initialize", enumerator_initialize, -1);
     rb_define_method(rb_cEnumerator, "initialize_copy",
enumerator_init_copy, 1);
     rb_define_method(rb_cEnumerator, "each", enumerator_each, 0);
+ rb_define_method(rb_cEnumerator, "get_object", enumerator_get_object, 0);
     rb_define_method(rb_cEnumerator, "each_with_index",
enumerator_with_index, 0);
     rb_define_method(rb_cEnumerator, "each_with_object",
enumerator_with_object, 1);
     rb_define_method(rb_cEnumerator, "with_index", enumerator_with_index, 0);

please note that
2.times.get_object will give you 2 and not [0, 1] which 2.times.to_a
would give you.

Cheers
Robert

On 7/18/09, Intransition <transfire@gmail.com> wrote:

Any way to ask an Enumerator what the underlying object it is
enumerating for is? Eg.

  e = Enumerator.new([1,2,3], :each)
  e.some_method #=> [1,2,3]

--
Toutes les grandes personnes ont d’abord été des enfants, mais peu
d’entre elles s’en souviennent.

All adults have been children first, but not many remember.

[Antoine de Saint-Exupéry]

but this patch could do it if you really need it

Is this functionality...useful enough to merit being submitted to core?

···

--
Posted via http://www.ruby-forum.com/\.

I do not think so, I was in a strange mood and as there is no other way...
I suspect that enumerator hides its obj by designed.

But of course this patch is in the public domain now.

Cheers
Robert

···

On 7/18/09, Roger Pack <rogerpack2005@gmail.com> wrote:

but this patch could do it if you really need it

Is this functionality...useful enough to merit being submitted to core?

--
Toutes les grandes personnes ont d’abord été des enfants, mais peu
d’entre elles s’en souviennent.

All adults have been children first, but not many remember.

[Antoine de Saint-Exupéry]