From: Brian Candler Date: 2008-10-22T17:20:22+09:00 Subject: Re: extending object with another object Ittay Dror wrote: > How is it possible to extend an object using another object? It depends exactly on what you're trying to achieve. You have two separate objects, both with their own sets of methods *and* their own sets of instance variables. In what way do you want to "extend" the first with the second? What happens to instance variables belonging to the second object? Now, if you simply want a call to method X on object A to be forwarded to object B (in which context it would use object B's instance variables), then look at delegate.rb, or you can synthesise this pattern yourself using method_missing class A def hello puts "hello" end end class B def bye puts "bye" end end a = A.new b = B.new # This is a rough implementation of SimpleDelegator def a.other=(x) @other=x end def a.method_missing(*args) @other.send(*args) end a.other = b a.hello a.bye The important thing here is that when methods are delegated to the other object, they will be in the context of that object and hence have access to that object's instance variables. Put simply, that object will "work". In cases where the methods by themselves make sense, then generally you'd stick those methods into a Module so that both a and b could make use of them. class A include MyStuff end ... b = B.new b.extend MyStuff But clearly you know about this already. -- Posted via http://www.ruby-forum.com/.