|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 #************************************************* ****** -- Posted via http://www.ruby-forum.com/. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
MMH... you can try add this function to M_class
def change_me=(val) @m_container.container1 = Class1.new(val) end and then call object.change_me = 2 Sandro On Sun, May 11, 2008 at 8:22 PM, Extreme Noob <bengalyean@hotmail.com> 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 > > #************************************************* ****** > -- > Posted via http://www.ruby-forum.com/. > > -- Go outside! The graphics are amazing! |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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/. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Wow, didn't know about that =() function. Thanks for the
Sandro Paganotti wrote: > MMH... you can try add this function to M_class > > def change_me=(val) > @m_container.container1 = Class1.new(val) > end > > and then call > > object.change_me = 2 > > Sandro -- Posted via http://www.ruby-forum.com/. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Extreme Noob wrote:
> Wow, didn't know about that =() function. Thanks for the > > Look at this class: class Dog def initialize(name) @name = name end def name=(a_name) @name = a_name end def name return @name end end d = Dog.new("Spot") puts d.name d.name = "Rover" puts d.name The Dog class above is equivalent to: class Dog attr_accessor :name def initialize(name) @name = name end end In other words, the line: attr_accessor :name creates the methods "name=" and "name" for you. -- Posted via http://www.ruby-forum.com/. |
|
![]() |
| Outils de la discussion | |
|
|