Scala Case Classes and Pattern Matching
A case class declares an immutable data type with generated helpers: you can create one without new, compare by value, and print it readably. Its fields are public vals.
Scala
object Main {
case class Point(x: Int, y: Int)
def describe(p: Point): String = p match {
case Point(0, 0) => "origin"
case Point(x, 0) => s"on x-axis at $x"
case _ => "elsewhere"
}
def main(args: Array[String]): Unit = {
println(describe(Point(0, 0)))
println(describe(Point(4, 0)))
println(describe(Point(1, 2)))
}
}