gpt4 book ai didi

Ruby:访问父对象的实例变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:53 25 4
gpt4 key购买 nike

我有一组对象,每个对象本身都创建了一堆辅助对象。在辅助对象内部,我需要访问许多父实例变量,例如“名称”、一个记录器对象等等。

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

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

示例和 ruby​​fiddle:

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

最佳答案

为什么不直接传入父级?

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

关于Ruby:访问父对象的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22716488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com