Instance Methods

Two method objects are equal if they are bound to the same object and refer to the same method definition and their owners are the same class or module.

Returns an indication of the number of arguments accepted by a method. Returns a nonnegative integer for methods that take a fixed number of arguments. For Ruby methods that take a variable number of arguments, returns -n-1, where n is the number of required arguments. For methods written in C, returns -1 if the call takes a variable number of arguments.

class C
  def one;    end
  def two(a); end
  def three(*a);  end
  def four(a, b); end
  def five(a, b, *c);    end
  def six(a, b, *c, &d); end
c =
c.method(:one).arity     #=> 0
c.method(:two).arity     #=> 1
c.method(:three).arity   #=> -1
c.method(:four).arity    #=> 2
c.method(:five).arity    #=> -3
c.method(:six).arity     #=> -3

"cat".method(:size).arity      #=> 0
"cat".method(:replace).arity   #=> 1
"cat".method(:squeeze).arity   #=> -1
"cat".method(:count).arity     #=> -1

Invokes the block, setting the block’s parameters to the values in params using something close to method calling semantics. Returns the value of the last expression evaluated in the block.

a_proc = {|scalar, *values| {|value| value*scalar } }, 1, 2, 3)    #=> [9, 18, 27]
a_proc[9, 1, 2, 3]         #=> [9, 18, 27]
a_proc.(9, 1, 2, 3)        #=> [9, 18, 27]
a_proc.yield(9, 1, 2, 3)   #=> [9, 18, 27]

Note that prc.() invokes with the parameters given. It’s syntactic sugar to hide “call”.

For procs created using lambda or ->() an error is generated if the wrong number of parameters are passed to the proc. For procs created using or Kernel.proc, extra parameters are silently discarded and missing parameters are set to nil.

a_proc = proc {|a,b| [a,b] }   #=> [1, nil]

a_proc = lambda {|a,b| [a,b] }   # ArgumentError: wrong number of arguments (given 1, expected 2)

See also Proc#lambda?.

Returns a clone of this method.

class A
  def foo
    return "bar"

m = # => "bar"
n = # => "bar"

Returns a curried proc based on the method. When the proc is called with a number of arguments that is lower than the method’s arity, then another curried proc is returned. Only when enough arguments have been supplied to satisfy the method signature, will the method actually be called.

The optional arity argument should be supplied when currying methods with variable arguments to determine how many arguments are needed before the method is called.

def foo(a,b,c)
  [a, b, c]

proc  = self.method(:foo).curry
proc2 =, 2)          #=> #<Proc>                    #=> [1,2,3]

def vararg(*args)

proc = self.method(:vararg).curry(4)
proc2 =      #=> #<Proc>
proc3 =, :z) #=> #<Proc>             #=> [:x, :y, :z, :a]

Returns a hash value corresponding to the method object.

See also Object#hash.

Returns the name of the underlying method.

"cat".method(:count).inspect   #=> "#<Method: String#count>"

Returns the name of the method.

Returns the original name of the method.

Returns the class or module that defines the method.

Returns the parameter information of this method.

Returns the bound receiver of the method object.

Returns the Ruby source filename and line number containing this method or nil if this method was not defined in Ruby (i.e. native).

Returns a Method of superclass which would be called when super is used or nil if there is no method on superclass.

Returns a Proc object corresponding to this method.

Dissociates meth from its current receiver. The resulting UnboundMethod can subsequently be bound to a new object of the same class (see UnboundMethod).