2014-03-28 143 views
2

我有一組對象,每個對象都創建一堆幫助對象。在幫助對象的內部,我需要訪問許多父項實例變量,例如「名稱」,記錄器對象等。Ruby:父對象的訪問實例變量

我可以用所有需要的變量初始化幫助對象,但這看起來很乏味。有沒有辦法讓它的父對象擁有它所擁有的所有對象?

我發現了很多類似的問題,但大多數都是關於類變量和繼承,所以我還沒有找到解決方案。

例& 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

回答

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 
+0

整齊!謝謝! – andrbmgi