Ruby 获取构造函数参数的名称

Ruby 获取构造函数参数的名称,ruby,reflection,Ruby,Reflection,我想检索构造函数中参数的名称。给定以下代码: class Something def self.do_something(a, b); end def initialize(a, b); end end 我得到: Something.method(:do_something).parameters # => [[:req, :a], [:req, :b]] Something.method(:new).parameters # => [[:rest]] 在new的情况

我想检索构造函数中参数的名称。给定以下代码:

class Something
  def self.do_something(a, b); end
  def initialize(a, b); end
end
我得到:

Something.method(:do_something).parameters
# => [[:req, :a], [:req, :b]] 
Something.method(:new).parameters
# => [[:rest]] 

new
的情况下,
Method#parameters
为什么返回
[[:rest]]
,如何获取构造函数参数?

这是因为
Something.new
所采用的参数都是可选的。您可以将任意数量的参数传递给
某物。new
Something.new
将不使用给定的任何参数创建一个实例,并将给定给它的整个参数集传递给
Something#initialize
,您就是在那里用特定数量的参数定义了该方法

要获得您想要的内容,您需要直接查阅
Something#initialize

Something.instance_method(:initialize).parameters
# => [[:req, :a], [:req, :b]]
Something.instance_method(:initialize).parameters
# => [[:req, :a], [:req, :b]]

如果您询问
Something::new
的参数,您将得到
Something::new
的参数。如果你想知道
Something#initialize
的参数,你需要询问
Something#initialize

Something.instance_method(:initialize).parameters
# => [[:req, :a], [:req, :b]]
Something.instance_method(:initialize).parameters
# => [[:req, :a], [:req, :b]]
+1.好的研究……好的研究……:)直到那时我才想到。。所以我删除了我的答案..:(但你应该有你的天赋,即+1.)。。