Compare two case class values by their fields.

Value Equality

ValueEquality.scala
case class Color(r: Int, g: Int, b: Int)

object Main {
  def main(args: Array[String]): Unit = {
    val red = 
    val a = Color(red, 0, 0)
    val b = Color(255, 0, 0)
    val same = a == b

    println("a=" + a.toString)
    println("b=" + b.toString)
    println("same=" + same)
  }
}
case class Color(r: Int, g: Int, b: Int)

object Main {
  def main(args: Array[String]): Unit = {
    val red = 
    val a = Color(red, 0, 0)
    val b = Color(255, 0, 0)
    val same = a == b

    println("a=" + a.toString)
    println("b=" + b.toString)
    println("same=" + same)
  }
}
case class Color(r: Int, g: Int, b: Int)

object Main {
  def main(args: Array[String]): Unit = {
    val red = 
    val a = Color(red, 0, 0)
    val b = Color(255, 0, 0)
    val same = a == b

    println("a=" + a.toString)
    println("b=" + b.toString)
    println("same=" + same)
  }
}
value-equality Case classes compare by field values, not by object identity. Two instances with the same fields are equal, which makes them safe to compare directly.