2014-02-10 62 views
-1

我是新來的寶石,我想知道接下來,我可以調用一個方法在同一類,如:調用方法

class myClass 
    $myVar = inClass 

    def inClass 
     @value = (gets data from db) 
    end 
end 

如果有辦法做到這一點,可以有人請幫助我嗎?

回答

0

你可以做如下

class MyClass 

    def in_class 
     @value = (gets data from db) 
    end 
    def call_inclass 
     $my_var = in_class # don't use global variable. 
    end 

end 

創建一個新的實例方法call_inclass,並從那裏調用所需的類in_class。你的一個將不起作用,因爲in_class是一個實例方法,並且在class.. end內部self被設置爲該類。因此$myVar = in_class將簡單地將錯誤描述爲沒有方法錯誤。因爲$myVar = in_class它將被隱含解釋爲$myVar = self.in_class,其中selfMyClassin_class不是MyClass的方法,而是MyClass的實例的實例方法。

因此將方法調用包裝到另一個實例方法內部,如call_inclass

另一種方法是將in_class作爲MyClass的單例方法。然後它會工作。

class MyClass 
    # again don't use global variable, rather use 
    # class instance variable, @my_var 
    $my_var = in_class 

    def self.in_class 
     @value = (gets data from db) 
    end 
end 
+0

謝謝你的幫助,我試過了你給我的兩個例子,但他們都沒有工作,他們都給我一個「無」的價值,即使這樣做後「@value = 2 」。我需要一個全局變量在所有視圖頁面中使用。 – user3272070