小编mik*_*kev的帖子

Ruby:如何获取可选proc参数的默认值

假设我有一个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版本的解决方案.

ruby reflection function default-value optional-parameters

9
推荐指数
1
解决办法
1051
查看次数