I’m trying to find out the number and name of a method’s parameters.
I’ve googled for ‘ruby method parameter introspection’ and come up
with almost nothing. Is there a way to ask a method for the
parameters it takes?
Could this way also show me the method overloads?
foo()
foo(param1)
foo(param1, param2)
etc.
Ok, I tried that and it gets me to where I am now, I can see the
methods for an object, but I can’t tell if the method
a.) takes a parameter
b.) if it takes a parameter the # of parameters it takes.
Both can be answered using the arity method in the class Method.
For example, how many parameters does the Math class method sin take?
puts Math.method(:sin).arity
outputs 1
How may parameters does the String instance method slice take?
String.new.method(:slice).arity
outputs -1
This is because slice takes a variable number of arguments.
In this case the return value is -n-1 where n is the number of
required arguments.
So the number of required arguments is zero.
But I don’t think that’s true. It looks to me like slice requires 1
argument!
On Thu, 2006-03-23 at 06:15 +0900, Keith S. wrote:
I’m trying to find out the number and name of a method’s parameters.
I’ve googled for ‘ruby method parameter introspection’ and come up
with almost nothing. Is there a way to ask a method for the
parameters it takes?
I wrote a little thing 1 a while ago that lets you get the names of
method arguments, though with some limitations (no C methods, no
differentiation of block/splat args, etc).
Could this way also show me the method overloads?
foo()
foo(param1)
foo(param1, param2)
etc.