Choose a fallback value with ?:.

elvis The Elvis operator keeps a present value or returns the expression on the right.

Elvis Operator

name
ElvisOperator.kt
Replay: real traced execution (multi-file project)
fun main() {
    val name: String? = "Ada"
    val display = name ?: "anonymous"
    val greeting = "hello, $display"

    println("display=$display")
    println(greeting)
}
fun main() {
    val name: String? = null
    val display = name ?: "anonymous"
    val greeting = "hello, $display"

    println("display=$display")
    println(greeting)
}
fun main() {
    val name: String? = "Bo"
    val display = name ?: "anonymous"
    val greeting = "hello, $display"

    println("display=$display")
    println(greeting)
}
  1. name ← Ada, display ← Ada, greeting ← hello, Ada

    1fun main() {2    val name→ Ada: String? = "Ada" //@name=null, "Bo"3    val display→ Ada = nameAda ?: "anonymous"4    val greeting→ hello, Ada = "hello, $displayAda"56    println("display=$displayAda")7    println(greetinghello, Ada)8}
    outputdisplay=Ada
    hello, Ada
  1. name ← null, display ← anonymous, greeting ← hello, anonymous

    1fun main() {2    val name→ null: String? = null3    val display→ anonymous = namenull ?: "anonymous"4    val greeting→ hello, anonymous = "hello, $displayanonymous"56    println("display=$displayanonymous")7    println(greetinghello, anonymous)8}
    outputdisplay=anonymous
    hello, anonymous
  1. name ← Bo, display ← Bo, greeting ← hello, Bo

    1fun main() {2    val name→ Bo: String? = "Bo"3    val display→ Bo = nameBo ?: "anonymous"4    val greeting→ hello, Bo = "hello, $displayBo"56    println("display=$displayBo")7    println(greetinghello, Bo)8}
    outputdisplay=Bo
    hello, Bo

Pick the Display Value

  1. name may hold text or null.
  2. The left side of ?: is tried first.
  3. If name is present, display uses it.
  4. If name is null, display uses "anonymous". | name value | display | | --- | --- | | "Ada" | Ada | | null | anonymous |

Exercise: ElvisOperator.kt

Use the Elvis operator to greet a nullable name or fall back to anonymous