Rubyリファレンス: Home

method (Object)

Edit   History

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

obj.method(name)

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

レシーバのクラスのメソッドだけでなく、親クラスやインクルードしているモジュールのメソッドも対象になります。また、メソッドがpublicprotectedprivateのどれであってもMethodオブジェクトを作れます。nameで指定した名前のメソッドがないときは、例外NameErrorが発生します。

次の例では、Methodオブジェクトのcallメソッドを呼んでメソッドを実行しています。

class Cat
  def hello(n = nil)
    n ? Array.new(n, "meow!") : "meow!"
  end
  
  private
  def sleep
    "zzz..."
  end
end
 
cat = Cat.new
m = cat.method(:hello)
p m.call(3)
m = cat.method(:sleep)
p m.call
["meow!", "meow!", "meow!"]
"zzz..."

関連項目