Gennady
1/25/2005 4:09:00 PM
George Moschovitis wrote:
>>Object methods do not work in vacuum, they usually use instance
>>variables to reffer to the object's state, possibly changing it
>>(remember encapsulation ;-)?). How would you expect your
>>inject_method() deal with it?
>
>
> I thought Ruby promotes 'duck typing'.
>
> I would like to inject specific methods between specific classes. The
> destination class has all the instance variables needed to succesfully
> execute the method.
>
I do not think what you want has anything to do with 'duck typing'.
'duck typing' only means that you can send a message to any object and
if the object has a corresponding method it gets executed regardless of
object type. It does not urge you to abandon the "normal" way of method
definition for a class.
In general, I am very cautious to dynamically adding methods down the
road, as it greatly increases the risk of your system becoming
incomprehensible.
As somebody has indicated, Ruby has other ways to "inject" methods in
some controlled manner, like mixins or inheritance. I would consider
them first before resorting to any sort of "tricks", even if they were
possible (everything is possible in Ruby, you know ;-), one way or another).
Gennady.