Container wont contain! (noob question)

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

#*******************************************************

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

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

Wow, didn’t know about that =() function. Thanks for the help

Sandro P. 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

Extreme Noob wrote:

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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs