Code
scala
case class Point(x: Double, y: Double)
val p1 = Point(1.0, 2.0)
val p2 = Point(1.0, 2.0)
// Auto-generated equality
p1 == p2 // true
// Auto-generated copy with changes
val p3 = p1.copy(y = 5.0) // Point(1.0, 5.0)
// Destructure in pattern matching
p1 match {
case Point(x, y) => s"($x, $y)"
}