class vector<T> { constructor new(){...} constructor filled_by(int n, T t){...} co略 from_range(Range r){} c略 from_ite(Ite b, Ite e) } とか書きたい
2010-04-28 12:26:55っObjective-C RT @kinaba: class vector<T> { constructor new(){...} constructor filled_by(int n, T t){...} co略 from_range(Range r){} c略 f...
2010-04-28 12:28:58どこが起源かわからないけどC++/Java/C#/Dのようにコンストラクタが無名なのは非常によくない慣習だと思うんだよなー。マジメにコード書くときはコンストラクタは全てprivateにして全部名前付きメソッドからコンストラクタ呼んでるんだけど、これは言語レベルでなんとかしたい
2010-04-28 12:33:22@turugina 裏でサブクラスのインスタンス作ったりまではできなくて良いのでFactoryMethodというと広すぎる気かもですが、基本はそうです。で、これは単なるidiomではなく言語レベルで提供されるべき機能だと思う。
2010-04-28 12:45:37インスタンスの初期化方法を複数提供するのはいいんだけど、「利用者にオーバーロードの整合取らせる」ことでしか初期化方法を選択できないようになってるのはおかしいですよね。RT @kinaba どこが起源かわからないけどC++/Java/C#/Dのようにコンストラクタが無名なのは非常に
2010-04-28 12:51:21@heppoko_maid それを言語レベルでサポートすべきだろうというお話です。非自明なコンストラクタはすべて名前を持っているべきだと僕は思うので、static factory method を書くよりも無名のコンストラクタだけを書く方が楽になっちゃってる言語設計は間違っている
2010-04-28 12:56:44@Rayerd http://twitter.com/PG_kura/status/12985863962 @PG_kura さんのポストが僕の気持ちをよくあらわしてくださってました
2010-04-28 12:58:39@hotwatermorning おー。簡易コンストラクタ http://bit.ly/bdnxvN こんな感じですか。alloc と init 切り離して好き勝手やるのが一般的になってるんですね。ふむふむ
2010-04-28 13:20:53allocとinitを切り離すといえば、C++はoperator newとコンストラクタを切り離していると言える
2010-04-28 13:23:07