instance method Proc#parameters

parameters(lambda: nil) -> [object][permalink][rdoc][edit]

Proc オブジェクトの引数の情報を返します。

Proc オブジェクトが引数を取らなければ空の配列を返します。引数を取る場合は、配列の配列を返し、各配列の要素は引数の種類に対応した以下のような Symbol と、引数名を表す Symbol の 2 要素です。

:req

必須の引数

:opt

デフォルト値が指定されたオプショナルな引数

:rest

* で指定された残りすべての引数

:keyreq

必須のキーワード引数

:key

デフォルト値が指定されたオプショナルなキーワード引数

:keyrest

** で指定された残りのキーワード引数

:block

& で指定されたブロック引数

[PARAM] lambda:
true なら lambda として扱ったとき、false なら lambda ではない Proc として扱ったときの引数の情報を返します。


prc = lambda{|x, y=42, *other, k_x:, k_y: 42, **k_other, &b|}
prc.parameters #=> [[:req, :x], [:opt, :y], [:rest, :other], [:keyreq, :k_x], [:key, :k_y], [:keyrest, :k_other], [:block, :b]]
lambda: の例

prc = proc{|x, y=42, *other|}
p prc.parameters  # => [[:opt, :x], [:opt, :y], [:rest, :other]]
prc = lambda{|x, y=42, *other|}
p prc.parameters  # => [[:req, :x], [:opt, :y], [:rest, :other]]
prc = proc{|x, y=42, *other|}
p prc.parameters(lambda: true)  # => [[:req, :x], [:opt, :y], [:rest, :other]]
prc = lambda{|x, y=42, *other|}
p prc.parameters(lambda: false) # => [[:opt, :x], [:opt, :y], [:rest, :other]]

[SEE_ALSO] Method#parameters, UnboundMethod#parameters