Data Classes and Sealed Types
Copy Function
Use copy to make a modified data-class value.
copy
Data classes include a `copy` function for creating a value with selected changes.
Copy Function
CopyFunction.kt
Replay: real traced execution (multi-file project)
data class Badge(val name: String, val level: Int)
fun main() {
val level = 1
val badge = Badge("guide", level)
val promoted = badge.copy(level = level + 1)
val summary = "${promoted.name}:${promoted.level}"
println("level=$level")
println("summary=$summary")
}
data class Badge(val name: String, val level: Int)
fun main() {
val level = 2
val badge = Badge("guide", level)
val promoted = badge.copy(level = level + 1)
val summary = "${promoted.name}:${promoted.level}"
println("level=$level")
println("summary=$summary")
}
data class Badge(val name: String, val level: Int)
fun main() {
val level = 4
val badge = Badge("guide", level)
val promoted = badge.copy(level = level + 1)
val summary = "${promoted.name}:${promoted.level}"
println("level=$level")
println("summary=$summary")
}
level ← 1, summary ← guide:2
3fun main() {4 val level→ 1 = 1 //@level=2, 45 val badge = Badge("guide", level1)6 val promoted = badge.copy(level = level1 + 1)7 val summary→ guide:2 = "${promoted.nameguide}:${promoted.level2}"89 println("level=$level1")10 println("summary=$summaryguide:2")11}outputlevel=1 summary=guide:2
level ← 2, summary ← guide:3
3fun main() {4 val level→ 2 = 25 val badge = Badge("guide", level2)6 val promoted = badge.copy(level = level2 + 1)7 val summary→ guide:3 = "${promoted.nameguide}:${promoted.level3}"89 println("level=$level2")10 println("summary=$summaryguide:3")11}outputlevel=2 summary=guide:3
level ← 4, summary ← guide:5
3fun main() {4 val level→ 4 = 45 val badge = Badge("guide", level4)6 val promoted = badge.copy(level = level4 + 1)7 val summary→ guide:5 = "${promoted.nameguide}:${promoted.level5}"89 println("level=$level4")10 println("summary=$summaryguide:5")11}outputlevel=4 summary=guide:5