Check what changed between two immutable values.

Comparing Versions

CompareVersions.scala
case class Config(retries: Int, verbose: Boolean)

object Main {
  def main(args: Array[String]): Unit = {
    val retries = 
    val base = Config(2, false)
    val updated = base.copy(retries = retries)
    val changed = base.retries != updated.retries
    val sameVerbose = base.verbose == updated.verbose

    println("baseRetries=" + base.retries)
    println("updatedRetries=" + updated.retries)
    println("changed=" + changed)
    println("sameVerbose=" + sameVerbose)
  }
}
case class Config(retries: Int, verbose: Boolean)

object Main {
  def main(args: Array[String]): Unit = {
    val retries = 
    val base = Config(2, false)
    val updated = base.copy(retries = retries)
    val changed = base.retries != updated.retries
    val sameVerbose = base.verbose == updated.verbose

    println("baseRetries=" + base.retries)
    println("updatedRetries=" + updated.retries)
    println("changed=" + changed)
    println("sameVerbose=" + sameVerbose)
  }
}
case class Config(retries: Int, verbose: Boolean)

object Main {
  def main(args: Array[String]): Unit = {
    val retries = 
    val base = Config(2, false)
    val updated = base.copy(retries = retries)
    val changed = base.retries != updated.retries
    val sameVerbose = base.verbose == updated.verbose

    println("baseRetries=" + base.retries)
    println("updatedRetries=" + updated.retries)
    println("changed=" + changed)
    println("sameVerbose=" + sameVerbose)
  }
}
compare-versions Because the original is unchanged, code can compare the old and new values field by field and report what changed with boolean labels.