Rubyリファレンス: Home

public_method (Object)

Edit   History

Ruby 1.9

標準クラス・モジュール > Object > public_method

obj.public_method(name)

public_methodメソッドは、レシーバが持っているpublicなメソッドを元にMethodオブジェクトを作成して返します。引数nameにはシンボルか文字列でメソッド名を指定します。

レシーバのクラスのメソッドだけでなく、親クラスやインクルードしているモジュールのメソッドも対象になります。methodメソッドとは違い、protectedなメソッドとprivateなメソッドは対象になりません。nameで指定した名前のメソッドがないときは、例外NameErrorが発生します。

次の例では、privateなメソッドsleepを指定したために例外が発生します。

class Cat
  def hello(n = nil)
    n ? Array.new(n, "meow!") : "meow!"
  end
  
  private
  def sleep
    "zzz..."
  end
end
 
cat = Cat.new
m = cat.public_method(:hello)
p m.call(3)
(m = cat.public_method(:sleep)) rescue p $!
["meow!", "meow!", "meow!"]
#<NameError: undefined private method `sleep' for class `Cat'>

関連項目