ruby の特定のメソッドが、期待する引数の個数を range で取得したいと考えました。

どういうことかというと、 ruby にはデフォルト引数があるので、例えば以下のメソッドでは 0~2 個の引数を指定できます。

def hoge(a=1, b=2)
  p a; p b
end

この場合は、 0..2 を取得したいです。

本家で検索したところ、 arity メソッドがそれらしかったのですが、arity メソッドは、可変長パラメータを引数に取る場合には、「(-1)*(必須parameterの個数+1)」が帰ってくる様子です。実際上記hogeメソッドに対して実行すると、-1が返ってきます。

参考: https://stackoverflow.com/questions/17590080/is-there-a-way-to-know-how-many-parameters-are-needed-for-a-method

質問

  • ruby で、対象のメソッドが、実際に何個の引数を取り得るかの range を取得したいです。これは、実現可能でしょうか?