ruby元编程 - 获取类的方法名称和参数信息

时间:2010-10-08 09:08:40

标签: ruby class methods metaprogramming

我想在对象中获取类方法。请参阅以下示例     我有一个班级“user.rb”

class User
  def say_name

  end

  def walk(p1)

  end

  def run(p1, p2)

  end
end

我写了以下代码

require 'user.rb'

a = User.new

arr = a.public_methods(all = false)

上面的代码将返回方法名称,但我的问题是我想获取带参数的方法名称

def def run(p1, p2)

end

我想获取方法名称(“run”)及其参数名称(p1,p2)或参数count(2)

有人可以帮助我,提前谢谢

欢呼声

sameera

3 个答案:

答案 0 :(得分:5)

User.new.method(:run).arity   # => 2

答案 1 :(得分:1)

如果你想要参数,那么http://github.com/rdp/arguments就是你的朋友

答案 2 :(得分:0)

你想:

User.new.method(:run).parameters # => [[:req, :p1], [:req, :p2]]

req表示它是必填字段。您可能获得的其他值包括:

  • 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]]