Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Objectクラス > singleton_method

instance method Object#singleton_method

singleton_method(name) -> Method[permalink][rdoc]

オブジェクトの特異メソッド name をオブジェクト化した Method オブ ジェクトを返します。

[PARAM] name:
メソッド名をSymbol またはStringで指定します。
[EXCEPTION] NameError:
定義されていないメソッド名を引数として与えると発生します。
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>
m.call   #=> "Hi, @iv = 99"
m = k.singleton_method(:hello) # => NameError

[SEE_ALSO] Module#instance_method, Method, Object#__send__, Kernel.#eval, Object#method