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

[[m:Object#method]] ˤꥪ֥Ȳ
᥽åɥ֥ȤΥ饹Ǥ

᥽åɤμΡ̾Ǥʤˤȥ쥷ФȤޤ
[[c:Proc]] ֥ȤȰäƥƥȤݻޤ

=== Proc Ȥκ

[[c:Method]] ϼФоݤǤ᥽åɤ
ʤкޤ󤬡[[c:Proc]] Ͻʤ˺ޤ
[[c:Proc]] ϻȤΤƤ˸[[c:Method]] ϲ٤֤ⷫ
˸ȸޤޤ񤹤륳ɤ礭ȤǤ
[[c:Proc]] Ͼϡ[[c:Method]] 絬ϥɤ˸ȸޤ


¸Υ᥽åɤ [[c:Method]] ֥Ȳ롣

  class Foo
    def foo(arg)
      "foo called with arg #{arg}"
    end
  end

  m = Foo.new.method(:foo)

  p m             # => #<Method: Foo#foo>
  p m.call(1)     # => "foo called with arg 1"

̾Τʤ᥽å()ɬפʤ [[c:Proc]] Ȥɤ

  pr = Proc.new {|arg|
    "proc called with arg #{arg}"
  }

  p pr            # => #<Proc:0x401b1fcc>
  p pr.call(1)    # => "proc called with arg 1"

[[c:Method]] ֥ȤͭѤʤΤϰʲΤ褦ʾ硣

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

  obj = Foo.new

  # ǤդΥȥ᥽åɤδطϥåݻƤ
  methods = {1 => obj.method(:foo),
             2 => obj.method(:bar),
             3 => obj.method(:baz)}

  # ȤäƴϢ᥽åɤƤӽФ
  p methods[1].call       # => "foo"
  p methods[2].call       # => "bar"
  p methods[3].call       # => "baz"

쥷Фꤵ(Method ֥Ȥϥ쥷Фݻ)ɬ
פʤʤ [[m:Object#send]]Ȥˡͭѡ

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

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

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

@see [[m:Object#method]]
