【问题标题】:How to print a method's parameter names如何打印方法的参数名称
【发布时间】:2011-10-03 20:16:53
【问题描述】:

有没有一种快速的方法来输出 ruby​​ 方法的可能参数名称?

例如:

def my_method(param1, param2, param3, ...)
  # stuff
end

puts get_params("my_method")

会输出类似的东西:

param1
param2
param3
...

谢谢!

哦,顺便说一句,我在 ree-1.8.7...

【问题讨论】:

标签: ruby printing parameters


【解决方案1】:

怎么样:

class A
  def my_method(param1, param2, param3)
    # stuff
  end
end

A.instance_method(:my_method).parameters # => [[:req, :param1],[:req, :param2],[:req, :param3]]

A.instance_method(:my_method).parameters.collect { |p| p[1] } # => [:param1, param2, param3]

如果您在 irb 控制台上执行此操作,如您的示例所示:

>> def my_method(param1, param2, param3)
>>   # stuff
>> end
=> nil

>> def get_params(method_name)
>>   self.class.instance_method(method_name.to_sym).parameters.collect { |p| p[1] }.each { |name| puts name }
>> end
=> nil

>> get_params(:my_method)
param1
param2
param3
=> [:param1, :param2, :param3]

(从我的 irb 控制台复制/粘贴。)

【讨论】:

  • 应该知道,虽然这是最好的答案,但 Method#parameters 仅是 1.9
  • 正好是 1.9.2。 Ruby 1.9.1 不包含它(至少我的版本;))
  • 我被 ree-1.8.7 卡住了,它看起来也没有#parameters。虽然这绝对是一个解决方案,但是没有这种方法有没有办法?
  • +1 .. 重新阅读问题.. 他在询问参数的名称 :)
猜你喜欢
  • 2012-06-16
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 2010-09-17
  • 2010-09-18
相关资源
最近更新 更多