0

有没有办法从类内部访问外部方法?例如:

使用 .haml 文件(因此在里面class Haml::Engine),有一个class Tumblr定义的方法self.render。在Tumblr类之外,#haml_concat功能完美,但返回一个NameErrorinside Tumblr#haml_concat中定义Haml::Helpers。为什么#haml_concat里面不能用Tumblr

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>

4

1 回答 1

2

如果你没有指定方法的接收者,ruby 在当前对象的类中查找它,直到它的所有祖先。

所以,因为Haml::Engine不在Tumblr祖先列表中,ruby 找不到这个方法。解决方案是指定显式调用方法的对象。

而且,你真的Tumblr在​​haml文件中定义类吗?这看起来是一个非常糟糕的方法。

于 2012-05-16T22:28:15.833 回答