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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs