Control Flow
If Expression
Choose a value with an if expression.
branch
In Kotlin, `if` can produce a value that is assigned to a variable.
If Expression
IfExpression.kt
Replay: real traced execution (multi-file project)
fun main() {
val score = 72
val status = if (score >= 70) "pass" else "retry"
val message = "score=$score"
println(message)
println("status=$status")
}
fun main() {
val score = 45
val status = if (score >= 70) "pass" else "retry"
val message = "score=$score"
println(message)
println("status=$status")
}
fun main() {
val score = 91
val status = if (score >= 70) "pass" else "retry"
val message = "score=$score"
println(message)
println("status=$status")
}
score ← 72, status ← pass, message ← score=72
1fun main() {2 val score→ 72 = 72 //@score=45, 913 val status→ pass = if (score72 >= 70) "pass" else "retry"4 val message→ score=72 = "score=$score72"56 println(messagescore=72)7 println("status=$statuspass")8}outputscore=72 status=pass
score ← 45, status ← retry, message ← score=45
1fun main() {2 val score→ 45 = 453 val status→ retry = if (score45 >= 70) "pass" else "retry"4 val message→ score=45 = "score=$score45"56 println(messagescore=45)7 println("status=$statusretry")8}outputscore=45 status=retry
score ← 91, status ← pass, message ← score=91
1fun main() {2 val score→ 91 = 913 val status→ pass = if (score91 >= 70) "pass" else "retry"4 val message→ score=91 = "score=$score91"56 println(messagescore=91)7 println("status=$statuspass")8}outputscore=91 status=pass
Follow the Branch
scorestarts as72.- The
ifchecks whetherscore >= 70. 72 >= 70is true.statusbecomespass.- The script prints
score=72andstatus=pass. | score | check | status | | --- | --- | --- | | 72 | true | pass | | 45 | false | retry | | 91 | true | pass |
Exercise: IfExpression.kt
Reproduce score=72 and status=pass, then use the pinned score variants 45 and 91 to predict status=retry and status=pass.