从内部级接入外方法(Access outer method from inside class)

2019-09-17 07:01发布

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

使用.haml文件(因此内部class Haml::Engine ),具有class Tumblr所定义,与一种方法self.render 。 在外面Tumblr类, #haml_concat功能完美,但返回NameErrorTumblr#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>

Answer 1:

如果不指定方法的接收器,红宝石看着它在类当前对象,并到它的所有祖先。

所以,因为Haml::Engine不在列表中Tumblr的祖先,红宝石无法找到这种方法。 解决的办法是指定您调用方法明确对象。

而且,你真的定义Tumblr HAML文件中的类? 它看起来像一个非常糟糕的做法。



文章来源: Access outer method from inside class
标签: ruby scope