代码之家  ›  专栏  ›  技术社区  ›  sameera207

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

  •  3
  • sameera207  · 技术社区  · 14 年前

    我想在一个对象中获取类方法。请参阅以下示例 我有一个类“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)或参数计数(2)

    有人能帮我吗,提前谢谢

    干杯

    萨梅拉

    3 回复  |  直到 7 年前
        1
  •  5
  •   Gishu    14 年前
    User.new.method(:run).arity   # => 2
    
        2
  •  1
  •   rogerdpack    14 年前
        3
  •  0
  •   Tim Scott    7 年前

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