2010-10-06 56 views
0

先从以下情形:获取/设置参数的默认值动态

class Foo 
    def bar(baz={}) 
    p baz 
    end 
end 

foo = Foo.new 
p meth = foo.method(:bar) # => #<Method: Foo#bar> 
p meth.parameters # => [[:opt, :baz]] 

所以我可以计算出该方法bar是可选的,但我怎么找到该方法的默认值({}) ?

回答

2

只是这样做:

foo.bar 

既然你是不是在巴兹值传递,它会打印出的默认值。

虽然,我打赌你想要的东西,将适用于任何方法。我知道的唯一一致的方法是查看源代码。

答案:有人写了一个脚本来做它here

但是,查看脚本以试图了解它是如何将默认值拉出来会让我的头部受伤。

+0

Wowza ..我觉得在Ruby中获取默认值会更容易。不过谢谢,我会读完这个疯狂并试图弄清楚它=) – RyanScottLewis 2010-10-07 07:16:38