2013-02-25 12 views
7

をサポートするすべてのケースクラスのための共通の特徴を作成します。私は、同様のことをやろうとしているいくつかの他の関連する質問を見つけた私はそのような何かをやろうとしているコピー(ID = NEWID)メソッド

trait IdentifiableModel[T] { 
    self: { def copy(id: ObjectId): T } => 

    val id: ObjectId 
} 

を彼ら本当にこの質問に答えなかった。 私の場合、ID値を共有するIdentifiableModelのcaseクラスのサブクラスをコピーしようとしています

+0

私はすべてのソリューションに心を開いています、私は右のマクロを使用することも可能であると思いますか? –

+0

達成したいのは正確には何ですか?私が正しいかどうか教えてください:一つの一意の 'id'フィールドを持つケースクラスのセットを持っていて、自動的に生成された' copy'メソッドをポリモーフィックに呼び出すことができるようにしたいとします(つまり共通基底クラス 'IdentifiableModel'を通して) ? –

+0

これは、暗黙のマクロの使用、すなわち 'id:ObjectId'フィールドを持つケースクラス' T'インスタンスから 'IdentifiableModel [T] {def copy(id:ObjectId):T } '。 scala 2.10.1では、暗黙的なマクロのバグ(https://issues.scala-lang.org/browse/SI-5923)のために、あなたが待つことができない限り、存在する型のトリックを使わなければなりません2.10.2のために、それはようである。 私は上記のように動作することを確認するために、完全なユースケースについてもっと知りたいと思っています。 – Leo

答えて

関連する問題