Hi --

On Thu, 27 Jul 2006, rak rok wrote:

> Hi David,
>
>> > I would have expected b.one to output:
>> > A::one
>> > custom
>> 
>> (Do you mean "foo" rather than "custom"?)
>
> (Woops, yes i meant "foo")
>
>> Your guess is right :-)  When a handles the delegate call to #one,
>> part of that call is a call to #two -- which, as far as a is
>> concerned, is A#two.
>> 
>> You can always override A#two, but I imagine that's not what you have
>> in mind.  I'm not sure exactly what you are trying to do, though.
>
> Makes sense.. But then how is it possible to override A#two if all I
> have is an instance of B?

You really want b's delegated object to have a new #two -- so:

   class << b.__getobj__
     def two
       puts "custom"
     end
   end

or something along those lines.


David


> Thanks!
> -rak-
>
>> David
>> 
>> --
>> http://www.rubypowerandlight.com => Ruby/Rails training & consultancy
>> http://www.manning.com/black     => RUBY FOR RAILS (reviewed on
>>                                      Slashdot, 7/12/2006!)
>> http://dablog.rubypal.com        => D[avid ]A[. ]B[lack's][ Web]log
>> dblack / wobblini.net              => me
>> 
>> 
>

-- 
http://www.rubypowerandlight.com => Ruby/Rails training & consultancy
http://www.manning.com/black     => RUBY FOR RAILS (reviewed on
                                     Slashdot, 7/12/2006!)
http://dablog.rubypal.com        => D[avid ]A[. ]B[lack's][ Web]log
dblack / wobblini.net              => me