質問: railsの中身を読んでいました ``` def sum(*) calculate :sum, nil end ``` 仮引数が `*` のみです。 何を示していてどういうときに使うのでしょうか? --- 追記: cul8erさんの回答によって、一般的に子クラスの`initialize`で使うことがわかりました。 > > 何に使うことが多いかというと、多分、基底クラスの#initialzeにsuperで引数渡しをする際に、派生クラス側で親の#initializeの引数数を把握したくない(≒依存したくない)という場合などが考えられます。 > > > railsの`sum`のケースですと`super`と関係がないと思いますので、できればrailsの`sum`で使われている用法もお願い致します。
回答: これは確か`splat`演算子と呼ばれるものです。 ``` def abc(*arg) arg.each{|n| p n} end abc(1,2,3) #=> 1 2 3 が出力 ``` このように仮引数名をつけても使えますが、実は省略可能です。 何に使うことが多いかというと、多分、基底クラスの`#initialze`に`super`で引数渡しをする際に、派生クラス側で親の`#initialize`の引数数を把握したくない(≒依存したくない)という場合などが考えられます。 例を挙げているページがあったのでご参考まで:ここまで出来る!RubyのSplat Operatorまとめ