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)))
  }
}
Read the full lesson