Careeroza
Elvis Operator
Default Values with ?:
Example
a ?: b returns a if it is not null, otherwise b. It is named after Elvis Presley's hairstyle ?:.
fun main() {
val displayName: String? = null
val name = displayName ?: "Guest"
println("Welcome, $name")
val savedTip: Int? = null
val tip = savedTip ?: 0
println("Tip: ₹$tip")
val nickname: String? = "Chintu"
println(nickname?.length ?: 0)
}Output
Welcome, Guest Tip: ₹0 6
Elvis with return and throw
Example
The right side can also be return or throw, which is a neat way to exit early.
fun greet(name: String?) {
val n = name ?: return // stop if null
println("Hello, $n")
}
fun parseAge(text: String): Int {
return text.toIntOrNull() ?: throw IllegalArgumentException("Invalid age: $text")
}
fun main() {
greet("Meena")
greet(null) // prints nothing
println(parseAge("25"))
println(parseAge("abc"))
}Output
Hello, Meena 25 Exception: java.lang.IllegalArgumentException: Invalid age: abc