我有一组对象,每个对象本身都会创建一堆辅助对象。在辅助对象内部,我需要访问许多父实例变量,例如“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
答案 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