Scope Functions
Apply Config
Use apply to configure an object and then read scalar fields.
apply
`apply` uses the object as the block receiver and returns the same object.
Apply Config
ApplyConfig.kt
Replay: real traced execution (multi-file project)
class Badge {
var title: String = ""
var level: Int = 0
}
fun main() {
val title = "starter"
val badge = Badge().apply {
this.title = title
level = title.length
}
val summary = "${badge.title}:${badge.level}"
println("title=$title")
println("summary=$summary")
}
class Badge {
var title: String = ""
var level: Int = 0
}
fun main() {
val title = "expert"
val badge = Badge().apply {
this.title = title
level = title.length
}
val summary = "${badge.title}:${badge.level}"
println("title=$title")
println("summary=$summary")
}
class Badge {
var title: String = ""
var level: Int = 0
}
fun main() {
val title = "guide"
val badge = Badge().apply {
this.title = title
level = title.length
}
val summary = "${badge.title}:${badge.level}"
println("title=$title")
println("summary=$summary")
}
title ← starter, summary ← starter:7
6fun main() {7 val title→ starter = "starter" //@title="expert", "guide"8 val badge = Badge().apply {9 this.title = title10 level = title.length11 }12 val summary→ starter:7 = "${badge.titlestarter}:${badge.level7}"1314 println("title=$titlestarter")15 println("summary=$summarystarter:7")16}outputtitle=starter summary=starter:7
title ← expert, summary ← expert:6
6fun main() {7 val title→ expert = "expert"8 val badge = Badge().apply {9 this.title = title10 level = title.length11 }12 val summary→ expert:6 = "${badge.titleexpert}:${badge.level6}"1314 println("title=$titleexpert")15 println("summary=$summaryexpert:6")16}outputtitle=expert summary=expert:6
title ← guide, summary ← guide:5
6fun main() {7 val title→ guide = "guide"8 val badge = Badge().apply {9 this.title = title10 level = title.length11 }12 val summary→ guide:5 = "${badge.titleguide}:${badge.level5}"1314 println("title=$titleguide")15 println("summary=$summaryguide:5")16}outputtitle=guide summary=guide:5