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.)。。