假设我有一个proc/lambda/block/method/etc,如下所示:
2.1.2 :075 > procedure = Proc.new { |a, b=2, *c, &d| 42 }
=> #<Proc:0x000000031fcd10@(irb):75>
Run Code Online (Sandbox Code Playgroud)
我知道我可以找到参数的名称:
2.1.2 :080 > procedure.parameters
=> [[:opt, :a], [:opt, :b], [:rest, :c], [:block, :d]]
Run Code Online (Sandbox Code Playgroud)
但是,如果没有给出给定的可选参数,我该怎么做?
PS:是的.我知道这之前已经被问过/回答了,但之前的解决方案需要使用merbgem,这实际上有点误导.merb它本身取决于methopara宝石(除非你在JRuby或MRI,我不是),它本身在回答问题时提供了这个功能.
可悲的是,目前methopara似乎是放弃了软件.此外,它只支持ruby 1.9(甚至不支持最新版本),所以我正在寻找适用于当前ruby版本的解决方案.