Container wont contain! (noob question)

E

Extreme Noob

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

#*******************************************************
 
S

Sandro Paganotti

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
 
7

7stud --

Extreme said:
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
 
7

7stud --

Extreme said:
Wow, didn't know about that =() function. Thanks for the help

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top