Immutable Data Patterns
Comparing Versions
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.