Immutable Data Patterns
Update by Copy
Make a changed copy and leave the original intact.
Update by Copy
UpdateByCopy.scala
case class Point(x: Int, y: Int)
object Main {
def main(args: Array[String]): Unit = {
val dx =
val origin = Point(0, 0)
val x = origin.x + dx
val moved = origin.copy(x = x)
println("origin=" + origin.toString)
println("moved=" + moved.toString)
println("originUnchanged=" + (origin.x == 0))
}
}
case class Point(x: Int, y: Int)
object Main {
def main(args: Array[String]): Unit = {
val dx =
val origin = Point(0, 0)
val x = origin.x + dx
val moved = origin.copy(x = x)
println("origin=" + origin.toString)
println("moved=" + moved.toString)
println("originUnchanged=" + (origin.x == 0))
}
}
case class Point(x: Int, y: Int)
object Main {
def main(args: Array[String]): Unit = {
val dx =
val origin = Point(0, 0)
val x = origin.x + dx
val moved = origin.copy(x = x)
println("origin=" + origin.toString)
println("moved=" + moved.toString)
println("originUnchanged=" + (origin.x == 0))
}
}
update-by-copy
Immutable data is never changed in place. `copy` builds a new value with one field replaced while the original keeps its old fields.