From: Nobuyoshi Nakada Date: 2016-02-20T13:34:45+09:00 Subject: [ruby-list:50276] Re: 質問:定義済みメソッドの引数デフォルト値を取得する方法 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はできる。 中田 伸悦