type=class
superclass=Object
included=
extended=
library=_builtin

쥷Фʤ᥽åɤɽ饹Ǥ
ƤӽФˤϥ쥷Ф˥Хɤɬפޤ

[[m:Module#instance_method]] 
[[m:Method#unbind]] ˤ
[[m:UnboundMethod#bind]] ˤ쥷Ф
Ƥ [[c:Method]] ֥Ȥ뤳ȤǤޤ

: [[c:Method]] 饹Ƭˤ UnboundMethod ǽ񤯤ȰʲΤ褦ˤʤޤ

  class Foo
    def foo() "foo" end
    def bar() "bar" end
    def baz() "baz" end
  end

  # ǤդΥȥ᥽åɤδطϥåݻƤ
  # 쥷Фξ󤬤ˤϤʤȤ
  methods = {1 => Foo.instance_method(:foo),
             2 => Foo.instance_method(:bar),
             3 => Foo.instance_method(:baz)}

  # ȤäƴϢ᥽åɤƤӽФ
  # 쥷ФǤ(Foo 饹Υ󥹥󥹤ǤʤФʤʤ)
  p methods[1].bind(Foo.new).call      # => "foo"
  p methods[2].bind(Foo.new).call      # => "bar"
  p methods[3].bind(Foo.new).call      # => "baz"

: ʲϥ᥽åɤκ UnboundMethod ȤäƹԤˡǤ̤
alias  super Ȥޤ

  class Foo
    def foo
      p :foo
      end
    @@orig_foo = instance_method :foo
    def foo
      p :bar
      @@orig_foo.bind(self).call
    end
  end

  Foo.new.foo

  => :bar
     :foo
