以下代码有效:
class MyClass
def method_a
method_b
end
private
def method_b
puts "Hello!"
end
end
m = MyClass.new
m.method_a
然而,将对 method_b 的调用更改为self.method_b
不起作用:
def method_a
self.method_b
end
我得到一个NoMethodError
. 我的印象是self
在实例方法中只解析为类的实例。为什么会self.method_b
导致问题?
注意:更改为self.method_b
时有效。private
protected
注意:如果将上述方法更改为类方法self.method_b
,则从 method_a 调用不会抛出NoMethodError
.