次のコードが機能します。
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
。