动态获取/设置参数的默认值

时间:2010-10-06 13:50:18

标签: ruby metaprogramming

从以下场景开始:

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是可选的,但是如何找到该方法的默认值({})?

1 个答案:

答案 0 :(得分:2)

这样做:

foo.bar

由于您没有为baz传递值,因此会打印出默认值。

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

答案:有人编写了一个脚本here

然而,查看脚本以尝试理解它如何拉出默认值会让我头疼。