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.
> 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
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.