私の知る限りでは、明示的な受信者でプライベートメソッドを呼び出すことはできませんself
。Rubyを呼び出すプライベートメソッド
class Private
private
def private_method(c)
puts '#{c}'
end
end
p = Private.new
p.instance_eval{ private_method("private method called") }
これはどのように機能しますか?プライベートメソッドをinstance_eval
と呼ぶことができます。 instance_eval
がp
のコンテキストでブロックを実行する(意味は、それがself
ある)とprivate_method
への呼び出しは、現在の暗黙の受信機との通話であるので
ここに明示的な受信者はありませんか? –
私はあなたの質問で混乱しています。プライベートメソッドは、明示的な受信者なしでのみ呼び出すことができます。明示的な受信者なしでプライベートメソッドを呼び出します。次に、明示的な受信者なしでプライベートメソッドを呼び出すことができることに驚いていますか? –