オブジェクトの値をコピーする
case class Foo(key:Int, key2:String, key3:Int)のクラスからオブジェクトを生成し、それを他のオブジェクトにコピーしたいとき、scalaではcopyメソッドが使える。
val foo = Foo(100, "test", 200)とすると、keyは300がセットされ、他の値は元のオブジェクトからコピーされる。ただし、この機能はcaseクラスのみで、コピーされる対象は()内のプロパティのみ。val zoo = foo.copy(key = 300)
case class Foo(key:Int) {だと、v1, v2はコピーされない。
var v1:String =_
var v2:Int = _
}
となると、caseクラスのプロパティはすべて()内に書いちゃうほうがいいのかな。キーになる項目だけ(equalsで比較の対象となるべきものだけ)を定義するものだと思っていたんだけど。