[ruby-list:50276] Re: 質問:定義済みメソッドの引数デフォルト値を取得する方法

From: Nobuyoshi Nakada <nobu@...>
Date: 2016-02-20 04:34:45 UTC
List: ruby-list #50276
On 2016/02/20 11:15, Dice wrote:
> 定義済みのメソッドの引数情報を取得したい場合には
> Method#parameters メソッドを使用することになると思います。
> このとき、引数の種類や名前は取得できますが、デフォルト値は取得できないと思います。
> 
>     m = Class.new{define_method(:m){|x, y=42, *other, &b|}}.instance_method(:m)
>     m.parameters #=> [[:req, :x], [:opt, :y], [:rest, :other], [:block, :b]]
> 
> 定義済みメソッドの、引数のデフォルト値(上記の「42」)を取得したいのですが
> (1) pure rubyな機能か、もしくは既存のgemを使用して、これを実現する方法はありますでしょうか?

ありません。

> (2) 1が存在しない場合、拡張ライブラリを自作すれば、上記のことはおおむね可能になりそうでしょうか?

デフォルト値ではなくデフォルト式なので、Procか何かを返すしかないのですが、
その中からその前の引数も参照できるので、(2)も困難です。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread