Mám súbor predmetov, z ktorých každý sámvytvorte kopu pomocných predmetov. Vo vnútri pomocných objektov potrebujem prístup k mnohým premenným inštancie rodičov, ako je napríklad „meno“, objekt záznamníka a niektoré ďalšie.
Mohol som inicializovať pomocné objekty so všetkými potrebnými premennými, ale zdá sa mi to dosť zdĺhavé. Existuje spôsob, ako sprístupniť premenné inštancie rodičov všetkým objektom, ktoré vlastní?
Našiel som množstvo podobných otázok, ale väčšina sa týka triednych premenných a dedičnosti, takže som zatiaľ nenašiel riešenie.
Príklad a 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
odpovede:
2 pre odpoveď č. 1Prečo nielen odovzdať rodiča?
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