2017-09-14

引数が可変のメソッドを作りたい

引数がA,B,C,D,Eあるとして

A,Bだけ渡したら、内部でC,D,Eを自動的解釈するメソッドが作りたかった

 

これ、例えば

func hogeAll(A a, B b, C c, D d, E e) {

 全部入りメソッド

}

func hoge(A a, B b) {

 ここでhogeAllを呼べば解決する

}

 

んだけど、ABCDE全てに対して有/無のメソッドを全て定義すると果てしなくなる

これをスッキリ書ける言語ってのを知らない

 

方法があるとしたら引数Classを作ってしまう手がある

実際にこれはよくやられると思う

 

HikisuClass hikisu = HikisuClass.create(a,b)  // これで内部で自動的にc,d,eを解釈する

 

でもメソッド一個のためにクラスを作るのってクソ面倒だなと思う

もう一個方法があるとしたら、Classに値を入力したあとメソッドを実行する方法

 

Hoge hoge = new Hoge()

hoge.a = a

hoge.b = b

hoge.do()

 

しかしこれも長くなり煩雑だ、結局

hoge(a,b,null,null,null) みたいなことになりそう

 

ちなみに何でそういうことをしたいかと言えば、自然言語がそうなってるから

大抵の引数が省略されるし、省略されたりされなかったりする、非常に柔軟なんだ

もちろん受ける側の作り込みが大変になるが、ちゃんとリーダブルに作ろうとしたらそっちのほうが良いんじゃないかと思える

引数のoptional,require指定できればもっと良い

例えばコンソールで使うオプションとかって自由だよなあ

 

これってポリモーフィズムあたりの話か?

 

___

 

追記:

あ、DIコンテナみたいな話かな

でも結局煩雑だし使いたくない

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん