Method

Object#method 封装进对象之中的方法所组成的类。这个方法本身的内容(注意不是名称)和其被接受的对象被封装到对象中。和 Proc 不同,生成对象时的上下文是不会被保存的。

不同于 Proc: Method 必须要对应方法存在时才能创建,而 Proc 无需准备即可创建。有鉴于此,Proc 更适合一次性使用,而 Method 适合重复使用。此外,根据内含的代码量来看,Proc 适合小规模代码,而 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"

超类

方法

call(arg ... )
call(arg ... ) { ... }

启动封装于对象之中的方法,参数和区块都原封不动地传递给方法。。