プログラミング言語 Scala 8冊目at TECHプログラミング言語 Scala 8冊目 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト18:デフォルトの名無しさん 12/05/01 13:54:41.10 本当にやりたい事がthisコンストラクタを使って実現すべき事なのかどうかが 疑問だけど(設計が悪いんじゃないかしらということ) 計算自体を分離するなりすれば良いだけじゃないの? object X { def calc(a: Int, b: Int) = a * b + 10 } class X (val i: Int) { import X.calc def this(a: Int, b: Int) = this(X.calc(a, b)) } class Y (override val i: Int) extends X(i) { import X.calc def this(a: Int, b: Int) = this(X.calc(a, b)) } 19:デフォルトの名無しさん 12/05/01 14:21:26.61 class X(a: Int, b: Int) { val i = a * b + 10 } class Y(a: Int, b: Int) extends X(a, b) scala> new Y(2, 3).i res0: Int = 16 20:デフォルトの名無しさん 12/05/01 14:34:54.01 >>18, 19 ありがとう。 実際には scala 標準ライブラリのクラス (具体的には scala.collection.mutable.BitSet) に機能を追加したい。 protected なメンバにアクセスする必要があるので継承して子クラスを作るといいのかな、と。で、親クラスに 3 つあるコンストラクタを子クラスでもそのまま使いたいというシチュエーションです。 と思ったんだけど、 trait 作って new BitSet() with TraitA みたいにするのがいいのかな?その場合 companion object (BitSet) によるインスタンス生成時に trait くっつけることできないですよね。。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch