Getting method parameters in specified order

Hi,

If I declare a function that expects 3 arguments,

def bar(x, y, z)

end

and later, if I have the function name in a string, is there a way to
get the parameter names using reflection in Ruby? Something similar
to the following PHP snippet,

$a = new ReflectionFunction(“function_name”);
$a->getParameters();

Thanks in advance,

Bye,

-Chintana

I think we cant do more than this:

irb(main):001:0> def test(a, b, c)
irb(main):002:1> end
=> nil
irb(main):003:0> method(:test).arity
=> 3

On Dec 13, 2007 6:36 PM, Bernardo Monteiro R. [email protected]
wrote:

I think we cant do more than this:

irb(main):001:0> def test(a, b, c)
irb(main):002:1> end
=> nil
irb(main):003:0> method(:test).arity
=> 3

Thanks Bernardo.

Bye,

-Chintana

On Dec 12, 11:44 pm, Chintana W. [email protected] wrote:

Hi,

If I declare a function that expects 3 arguments,

def bar(x, y, z)

end

and later, if I have the function name in a string, is there a way to
get the parameter names using reflection in Ruby?

There is not; as Bernardo said, Ruby only allows you to check the
arity of the method.

I had a need for this, too. (I was working on a project that allowed
developers to provide arbitrary Ruby-based plugins, and the GUI of the
application needed to expose the methods and their paramters
visually.)

For that need, I wrote this:
http://phrogz.net/RubyLibs/rdoc/classes/DescribeMethods.html

From: Chintana W. [mailto:[email protected]]

Sent: Thursday, December 13, 2007 11:40 PM

To: ruby-talk ML

Subject: Re: Getting method parameters in specified order

On Dec 13, 2007 6:36 PM, Bernardo Monteiro R.

[email protected] wrote:

> I think we cant do more than this:

>

> irb(main):001:0> def test(a, b, c)

> irb(main):002:1> end

> => nil

> irb(main):003:0> method(:test).arity

> => 3

not part of ruby itself, but try looking at ruby2ruby

kind regards -botp

Forgive the naive thoughts of a ruby ruby…

ruby nuby, I meant. heh

On Dec 14, 2007 8:52 AM, Peña, Botp [email protected] wrote:

[snip]

Thanks Botp and Phrogz, I’ll look into it.

Bye,

-Chintana

Hi~

On Dec 14, 2007, at 4:57 AM, Lloyd L. wrote:

get the parameter names using reflection in Ruby? Something similar

You can accomplish this with the Ruby2Ruby gem. Here is a pastie of
some code that can do this for you:

http://pastie.caboo.se/128959

Here is how you can use it:

~/_merb/merb > irb -r get_args.rb

class Foo
def hi(a,b,c)
p a,b,c
end
end
=> nil
Foo.instance_method(:hi).get_args
=> [[:a], [:b], [:c]]

Cheers-

Chintana W. wrote:

Hi,

If I declare a function that expects 3 arguments,

def bar(x, y, z)

end

and later, if I have the function name in a string, is there a way to
get the parameter names using reflection in Ruby? Something similar
to the following PHP snippet,

$a = new ReflectionFunction(“function_name”);
$a->getParameters();

Forgive the naive thoughts of a ruby ruby, but what if you accepted an
array as the parameter? You could use any number of elements and you
would always know which is which.