从类内部访问外部方法

时间:2012-05-16 22:20:13

标签: ruby scope

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

使用.haml文件(因此在class Haml::Engine内),定义class Tumblr,方法self.render。在Tumblr班级之外,#haml_concat功能完美,但在NameError内返回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>

1 个答案:

答案 0 :(得分:2)

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

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

并且,你真的在​​haml文件中定义Tumblr类吗?这看起来非常糟糕。