From: Robert Klemme Date: 2005-04-12T23:49:43+09:00 Subject: Re: extension question: hiding block proc "Dave Lee" schrieb im Newsbeitrag news:bedf97cd050412061816c882d2@mail.gmail.com... > Hi all, > > I have an each method where the value being yielded is an instance of > an Array subclass, created with rb_class_new_instance(argc, argv, > myClass). Clearly, the each method is being passed a block. My > problem is that my Array subclass basically calls super(size), which > sees the block given to my each method, and yields to it. This means > my each method is getting called an additional n times, where n is the > size of my array subclass instance. How can I hide, mask, or > temporarily remove the given block when I call the array constructor, > but still have it in place when my each method calls yield? I've > looked at the ruby source, but can't see anything obvious. I find it difficult to translate what you wrote correctly. Do you do the equivalent of this? class ASub < Array def initialize(size) super(size) end end class AnotherClass def each yield ASub.new(10) end end I don't see how that could call your each method additional times. If at all the block is invoked several times from Array#initialize. Maybe you better post your original code... Kind regards robert