singleton_method(name) -> MethodRuby 2.1.0 から[permalink][rdoc][edit]-
オブジェクトの特異メソッド name をオブジェクト化した Method オブジェクトを返します。
特異クラスに include / prepend されたモジュールのインスタンスメソッド(例えば Object#extend で追加したモジュールのメソッド)も対象になります。
- [PARAM]
name: - メソッド名をSymbol またはStringで指定します。
- [EXCEPTION]
NameError: - 定義されていないメソッド名を引数として与えると発生します。
例: extend で追加したモジュールのメソッドclass Demo def initialize(n) @iv = n end def hello() "Hello, @iv = #{@iv}" end end k = Demo.new(99) def k.hi "Hi, @iv = #{@iv}" end m = k.singleton_method(:hi) # => #<Method: #<Demo:0xf8b0c3c4 @iv=99>.hi> p m.call #=> "Hi, @iv = 99" m = k.singleton_method(:hello) # ~> NameErroro = Object.new o.extend(Module.new { def a = 1 }) p o.singleton_method(:a).call # => 1[SEE_ALSO] Module#instance_method, Method, BasicObject#__send__, Object#send, Kernel?.eval, Object#method
- [PARAM]