Scope Functions
With Receiver
Use with to call several members on the same receiver.
with
`with` takes a receiver object and returns the block result.
With Receiver
WithReceiver.kt
Replay: real traced execution (multi-file project)
class ScoreCard(val base: Int) {
fun total(bonus: Int): Int {
return base + bonus
}
}
fun main() {
val bonus = 2
val card = ScoreCard(10)
val total = with(card) {
total(bonus)
}
println("bonus=$bonus")
println("total=$total")
}
class ScoreCard(val base: Int) {
fun total(bonus: Int): Int {
return base + bonus
}
}
fun main() {
val bonus = 0
val card = ScoreCard(10)
val total = with(card) {
total(bonus)
}
println("bonus=$bonus")
println("total=$total")
}
class ScoreCard(val base: Int) {
fun total(bonus: Int): Int {
return base + bonus
}
}
fun main() {
val bonus = 5
val card = ScoreCard(10)
val total = with(card) {
total(bonus)
}
println("bonus=$bonus")
println("total=$total")
}
bonus ← 2
7fun main() {8 val bonus→ 2 = 2 //@bonus=0, 59 val card = ScoreCard(10)10 val total = with(card) {11 total(bonus)12 }fun total(bonus: Int): Int
1class ScoreCard(val base: Int) {2 fun total(bonus2: Int): Int {3 return base10 + bonus24 }total ← 12
9 val card = ScoreCard(10)10 val total→ 12 = with(card) {11 total(bonus)12 }1314 println("bonus=$bonus2")15 println("total=$total12")16}outputbonus=2 total=12
bonus ← 0
7fun main() {8 val bonus→ 0 = 09 val card = ScoreCard(10)10 val total = with(card) {11 total(bonus)12 }fun total(bonus: Int): Int
1class ScoreCard(val base: Int) {2 fun total(bonus0: Int): Int {3 return base10 + bonus04 }total ← 10
9 val card = ScoreCard(10)10 val total→ 10 = with(card) {11 total(bonus)12 }1314 println("bonus=$bonus0")15 println("total=$total10")16}outputbonus=0 total=10
bonus ← 5
7fun main() {8 val bonus→ 5 = 59 val card = ScoreCard(10)10 val total = with(card) {11 total(bonus)12 }fun total(bonus: Int): Int
1class ScoreCard(val base: Int) {2 fun total(bonus5: Int): Int {3 return base10 + bonus54 }total ← 15
9 val card = ScoreCard(10)10 val total→ 15 = with(card) {11 total(bonus)12 }1314 println("bonus=$bonus5")15 println("total=$total15")16}outputbonus=5 total=15