2013-06-28 21 views
-2

如何從一個方法引用對象而不將其作爲變量傳遞?引用對象,而不會傳入新對象

我得到錯誤:

NameError: undefined local variable or method ‘my_object’ for Myclass:Class

class B 
    attr_accessor :somethings 

    include Enumerable 

    def initialize(*values) 
    self.somethings = [] 
    end 
end 

my_object = B.new({d:'d'}) 

class Myclass 

    def self.my_method 
    p my_object 
    end 
end 


Run: Myclass.my_method 

我不想爲我所有的方法是做...

def self.my_method(my_object) 
    p my_object 
    end 

我也可以解決這個問題從全局變量使用

$my_object = B.new({d:'d'}) 

但是,我只是真的想讓我的方法在Myclass類中可用的變量。

+0

它可以表達自己更好嗎? –

+0

您給出的示例按預期工作(省略未定義的函數add_my_values時)。請舉個例子來說明你所描述的NameError。 –

+0

@BorisStitnicky我試圖改寫這個帖子,希望這個更清楚。 – user2012677

回答

4

I only really want to make the variable available to my methods in Myclass class.

然後,您應該將其定義爲相應範圍Myclass中的實例變量。就像現在一樣,my_object是一個局部變量,由於範圍門而不可見。

class Myclass 
    @my_object = B.new({d:'d'}) 

    def self.my_method 
    p @my_object 
    end 
end 
+0

這就是我一直在尋找的,對於這樣一個基本的問題抱歉。 – user2012677

相關問題