Reputation: 16619
I want to get class methods in an object. Please see the following example I have a class "user.rb"
class User
def say_name
end
def walk(p1)
end
def run(p1, p2)
end
end
and I wrote the following code
require 'user.rb'
a = User.new
arr = a.public_methods(all = false)
Above code will return the method name, But my question is I want to get the method name with parameters
def def run(p1, p2)
end
I want to get the method name ("run") and its parameter names (p1, p2) or parameter count (2)
can someone help me, thanks in advance
cheers
sameera
Upvotes: 3
Views: 2303
Reputation: 15205
You want:
User.new.method(:run).parameters # => [[:req, :p1], [:req, :p2]]
req
means it's a required field. Other values you might get are:
def run(p1 = nil)
=> [[:opt, :p1]]
def run(*p1)
=> [[:rest, :p1]]
def run(&p1)
=> [[:block, :p1]]
def run(p1:)
=> [[:key, :p1]]
def run(p1: nil)
=> [[:keyopt, :p1]]
def run(**p1)
=> [[:keyrest, :p1]]
Upvotes: 1
Reputation: 66711
if you want parameters then http://github.com/rdp/arguments is your friend
Upvotes: 1