1
のパラメータとして形質を使ってI次のコードを持っている:はケースクラス
trait Vehicle{
val speed:Int
}
case class Car(speed: Int, color: String) extends Vehicle
case class Plane(speed: Int, numberOfEngines: Int) extends Vehicle
case class Storage(vehicle: Vehicle, size:Int)
ケースクラスの名前付きパラメータの一つとして形質を使用して、私はケースクラスの利益を失うが、例えば、コピー方法。
は、だから私はこのように車速を更新する場合:
val x = Storage(Car(100, "red"), 10)
x.copy(vehicle = x.vehicle.copy(speed = 30)) //this will not work.
これは明らかです。 ここのデザインが悪いように見えます。そのため、この問題で終了しました。
これをモデル化する良い方法はありますか?
これはこれに対する私の正確な解決策でした。しかし、私はそれがすべて間違っているように感じ、それを行うよりエレガントな方法が必要です。他のオプションはありますか? – Tomer
シェイプレスライブラリはこれをサポートしていますが、私はそれに精通していません。このリンクに従うことができますhttp://www.cakesolutions.net/teamblogs/copying-sealed-trait-instances-a-journey-through-generic-programming-and-shapeless –