names=bind
visibility=public
kind=defined

--- bind(obj)    -> Method

self を obj にバインドした [[c:Method]] オブジェクトを生成して返します。


@param obj 自身をバインドしたいオブジェクトを指定します。ただしバインドできるのは、
           生成元のクラスかそのサブクラスのインスタンスのみです。

@raise TypeError objがbindできないオブジェクトである場合に発生します

    # クラスのインスタンスメソッドの UnboundMethod の場合
    class Foo
      def foo
        "foo"
      end
    end
    
    # UnboundMethod `m' を生成
    p m = Foo.instance_method(:foo) # => #<UnboundMethod: Foo#foo>
    
    # Foo のインスタンスをレシーバとする Method オブジェクトを生成
    p m.bind(Foo.new)               # => #<Method: Foo#foo>
    
    # Foo のサブクラス Bar のインスタンスをレシーバとする Method
    class Bar < Foo
    end
    p m.bind(Bar.new)               # => #<Method: Bar(Foo)#foo>


    # モジュールのインスタンスメソッドの UnboundMethod の場合
    module Foo
      def foo
        "foo"
      end
    end
    
    # UnboundMethod `m' を生成
    p m = Foo.instance_method(:foo) # => #<UnboundMethod: Foo#foo>
    
    # Foo をインクルードしたクラス Bar のインスタンスをレシーバと
    # する Method オブジェクトを生成
    class Bar
      include Foo
    end
    p m.bind(Bar.new)               # => #<Method: Bar(Foo)#foo>

