Ruby:父对象的Access实例变量

时间:2014-03-28 15:05:58

标签: ruby instance-variables

我有一组对象,每个对象本身都会创建一堆辅助对象。在辅助对象内部,我需要访问许多父实例变量,例如“name”,logger对象等等。

我可以使用所有需要的变量初始化辅助对象,但这看起来很乏味。有没有办法让父实例变量为它所拥有的所有对象所知?

我发现了很多类似的问题,但大多数是关于类变量和继承的,所以我还没有找到解决方案。

示例& rubyfiddle:

class Helper
  def initialize()
  end

  def complexStuff
    puts # Parent object name
  end
end

class Main
  attr_accessor :name

  def initialize( name )
    @name = name
    @helper = Helper.new
  end

  def update
    puts "[(#{name}).update]"
    @helper.complexStuff
  end
end

instance1 = Main.new( "Instance 1" )
instance2 = Main.new( "Instance 2" )

instance1.update
instance2.update

rubyfiddle

1 个答案:

答案 0 :(得分:2)

为什么不直接传递父母?

class Helper
  def initialize(parent)
    @parent = parent
  end

  def complexStuff
    puts @parent.name # Parent object name
  end
end

class Main
  attr_accessor :name

  def initialize( name )
    @name = name
    @helper = Helper.new(self)
  end

  def update
    puts "[(#{name}).update]"
    @helper.complexStuff
  end
end

instance1 = Main.new( "Instance 1" )
instance2 = Main.new( "Instance 2" )

instance1.update
instance2.update