Hi --

On Mon, 27 Aug 2007, Logan Capaldo wrote:

> On 8/26/07, Nasir Khan <rubylearner / gmail.com> wrote:
>
>>
>> I get that. But the question is, is there a way to check for a block and
>> then yield in a defined method, as was my naive intention?
>>
> Stage 1) Upgrade to ruby 1.9 or later. 2) define_method(:foo) { |arg, &block|
>  if block then block.call else puts arg
> }

I'm not sure. Here's my little test:


   class C
   define_method(:foo) { |arg, &block|
     if block then block.call else puts arg end
   }
   end

   c = C.new
   c.foo(3) { puts "hi" }

which gives me:

   $ /usr/local/lib/ruby-svn/bin/ruby -v block9.rb
   ruby 1.9.0 (2007-08-25 patchlevel 0) [i686-darwin8.10.1]
   3

This is on 1/2-cup coffee so I may well be not seeing something I'm
doing wrong.


David

-- 
* Books:
   RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242)
   RUBY FOR RAILS (http://www.manning.com/black)
* Ruby/Rails training
     & consulting:  Ruby Power and Light, LLC (http://www.rubypal.com)