Obtaining number of block parameters

methods, ruby

Solution

When you materialize a block with &, it becomes a Proc object, which has an `arity` method. Just be careful - it returns the one's complement if the proc takes a *splat arg.

def foobar(x, y, z, &block)
  p block.arity
end

(Answer via "The Ruby Programming Language" book.)

Problem

I need to obtain the number of parameters a given block takes. For example: ``` foobar(1,2,3) { |a, b, c| } def foobar(x, y, z, &block) # need to obtain number of arguments in block # which would be 3 in this example end ``` This is possible in the 1.9 trunk, but not in any official release. I was hoping if there's any way to do this without having to download a separate gem/extension module.

Original source