[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はできる。
中田 伸悦