From: matz@... (Yukihiro Matsumoto) Date: 2000-09-12T14:27:22+09:00 Subject: [ruby-talk:4888] Re: Re-binding a block Hi, In message "[ruby-talk:4887] Re: Re-binding a block" on 00/09/12, Dave Thomas writes: |Now, say I wanted to make it more complicated and pass parameters in |to the block. Would it be reasonable to change instance_eval so that |if block_given? was true, any parameters given to instance_eval were |passed to the block? Or am I missing (yet another) clever trick? I don't think it's good idea to change instance_eval. How about this yet another trick (using yet undocumented unbound method). class Matz2 def internal(a) puts @name end @@block = self.instance_method(:internal) @name = "class level" def initialize @name = "instance level" end def block @@block.bind(self).call(42) end end Matz2.new.block I'm amazing myself how many tricks Ruby provide. It's far beyond the author expected. matz.