2012-05-16 78 views
0

有什麼方法從類內部訪問外部方法?例如:從類內部訪問外部方法

使用.haml文件(因此在class Haml::Engine中),定義了class Tumblr,方法self.render。在Tumblr課程之外,#haml_concat功能完美,但在Tumblr內返回NameError#haml_concatHaml::Helpers中定義。爲什麼#haml_concatTumblr內不可用?

value = 42 

class TestClass 
    def test_method 
    value 
    end 
end 

TestClass.new.value 
# should ideally return 42 

眼下這只是返回NameError: undefined local variable or method 'value' for #<TestClass:0x00000000e24960>

+1

這不是一個'外部方法'。值是一個局部變量,所以只能從其範圍 –

回答

2

如果你沒有指定方法的接收者,ruby會在當前對象的類中查找它,並且直到它的所有祖先。

那麼,因爲Haml::Engine不在Tumblr祖先列表中,所以ruby找不到這個方法。解決方案是指定顯式調用方法的對象。

而且,你真的在​​haml文件中定義了Tumblr類嗎?這看起來很糟糕。

+0

道歉,我想我已經過度簡化了這個問題。我試圖訪問一個在Module中定義的外部方法,同時也允許Class;我將編輯該問題。 – Fraser