【问题标题】:ruby metaprogramming - getting method names and parameter info for a classruby 元编程 - 获取类的方法名称和参数信息
【发布时间】:2011-04-22 19:03:11
【问题描述】:

我想在一个对象中获取类方法。请看下面的例子 我有一个类“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)

谁能帮帮我,提前谢谢

干杯

同人

【问题讨论】:

    标签: ruby class methods metaprogramming


    【解决方案1】:
    User.new.method(:run).arity   # => 2
    

    【讨论】:

    • 或者,如果您不想创建实例:User.instance_method(:run).arity #=> 2
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你想要:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-01
        • 2011-10-09
        • 2016-10-21
        • 2019-06-26
        • 2016-06-16
        • 2018-05-07
        相关资源
        最近更新 更多