Choose a value with an if expression.

branch In Kotlin, `if` can produce a value that is assigned to a variable.

If Expression

score
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")
}
  1. 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
  1. 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
  1. 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

  1. score starts as 72.
  2. The if checks whether score >= 70.
  3. 72 >= 70 is true.
  4. status becomes pass.
  5. The script prints score=72 and status=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.