39877


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

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

[code]

    def hoge(a=1, b=2)
      p a; p b
    end
    
[/code]

この場合は、 `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 を取得したいです。これは、実現可能でしょうか?


CC BY-SA 3.0
2017-11-27T04:55:31.640
39876
2017-11-27T05:12:38.280
754
question
ruby
ruby のメソッドに対して、期待引数個数の range を取得したい


丁度、質問投稿を見直していると、 accepted answer の下の方に、`Method#parameters`
メソッドについての説明がありました。これを実際に実行してみると、

[code]

    method(:hoge).parameters
    # => [[:opt, :a], [:opt, :b]]
    
[/code]

となったので、これが欲しかったメソッドの様子です。


CC BY-SA 3.0
2017-11-27T05:12:38.280
39877
2017-11-27T05:12:38.280
754
39876
answer