Rubyリファレンス: Home

public_instance_method (Module)

Edit   History

Ruby 1.9

標準クラス・モジュール > Module > public_instance_method

mod.public_instance_method(name)

publicinstancemethodメソッドは、クラスやモジュールが定義しているpublicなインスタンスメソッドを元にUnboundMethodオブジェクトを作成して返します。引数nameにはシンボルか文字列でメソッド名を指定します。

引数nameprotectedメソッドやprivateメソッドの名前を渡すと、例外NameErrorが発生します。

UnboundMethodオブジェクトが表すメソッドはレシーバを持っていないので、callで呼び出すことはできません。bindメソッドでオブジェクトと結び付け、Methodオブジェクトに変換すれば呼び出せます。

class Object
  def double
    self + self
  end
end
 
method = Object.public_instance_method(:double)
p method.bind("hello").call
p method.bind(2).call
"hellohello"
4

関連項目