From: 7stud -- Date: 2008-05-12T06:05:12+09:00 Subject: Re: Container wont contain! (noob question) Extreme Noob wrote: > Here I want to change Class1's var2 to equal 2. Now, I can do this by.. > "object.m_container.container1 = Class1.new(2)", but I want to do it > with "object.change_me = 2" > Point is I want to change that variable by simply using a number, as > apposed to xxx.new(arg). > Why wont object.change_me =2 work? > > (sorry if this seems confusing or silly) > > The following is a highly simplified representation of my current > problem.... > > #****************************************************************** > > class Class1 > > def initialize(aVar) > @var = aVar > @var2 = nil > if @var == 1 then @var2 = 1 elsif @var == 2 then @var2 = 2 end > end > end > > class Class2 > attr_accessor :container1 > > def initialize(container1) > @container1 = container1 > end > end > > class M_class > attr_accessor(:m_container,:change_me) > > def initialize > @m_container = Class2.new(Class1.new(change_me) ) > end > > def change_me > @change_me = 1 > end > end > > > object = M_class.new > > #object.m_container.container1 = Class1.new(2) <--- currently doing it > like this > > #object.change_me = 2 <----- want to do it like this (or something as > easy) > > p object > > #******************************************************* That's pretty confusing. How about this: class Class1 attr_accessor :var2 def initialize(aVar) @var = aVar @var2 = nil if @var == 1 @var2 = 1 elsif @var == 2 @var2 = 2 end end end class Class2 attr_accessor :container1 def initialize(container1) @container1 = container1 end end class M_class attr_accessor :m_container def initialize @m_container = Class2.new(Class1.new(1) ) end def set_var2=(val) @m_container.container1.var2 = val end def get_var2 @m_container.container1.var2 end end obj = M_class.new obj.set_var2 = 2 puts obj.get_var2 -- Posted via http://www.ruby-forum.com/.