2012-05-16 226 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