私はこのようなtrait
を持っています。例えば :Scalaのパターンマッチングで労働組合の種類は
case class EntityA(id: Option[Long], name: String, created: Date) extends Identifiable
case class EntityB(id: Option[Long], price: Long, count: Int) extends Identifiable
は、私がSeq[Identifiable]
を持っていることを前提としていて、私はそれぞれに新しいid
を割り当てます。
val xs: Seq[Identifiable] = ...
xs.map {
case x: EntityA => x.copy(id = Some(nextId))
case x: EntityB => x.copy(id = Some(nextId))
}
良い:
最も簡単な方法は、のようです!しかし問題があります。 より多くのサブクラスを書くほど、より多くの(重複した)コードが作成されます。
私は連合タイプから助けを得ることを試みた:
xs.map {
case x: EntityA with EntityB => x.copy(id = Some(nextId))
}
または
xs.map {
case x @ (_: EntityA | _: EntityB) => x.copy(id = Some(nextId))
}
が、私は言うエラーました:Cannot resolve symbol copy
を任意の助けをいただければ幸いですが。おかげさまで
:http://stackoverflow.com/questions/40995639/scala-how-to-define-an-abstractあなたが何をしようとしてにかなり似ているこの答えを参照してください。 -copyable-super-for-any-case-class –