【发布时间】:2014-07-04 12:29:27
【问题描述】:
我正在玩自省,想在运行时提取参数计数和参数名称。有没有可能实现这样的东西?
class Greeter
def self.greet(name, weekday = "Friday")
"Hello #{name}. Today is #{weekday}"
end
def self.splatter(*arguments)
arguments.join("|")
end
end
Greeter.argument_count(:greet)
=> 1..2
Greeter.argument_names(:greet)
=> [:name, :weekday]
Greeter.argument_count(:splatter)
=> [0..Infinity]
我不知道如何检索参数的名称。
然而,我设法通过故意调用带有大量随机参数的方法来提取参数计数,以触发ArgumentError,然后从异常消息中提取允许的参数数量。但是,这很危险,并且不适用于 splat 方法签名。
【问题讨论】:
标签: ruby metaprogramming introspection