Run a small block only when a nullable value is present.

Let Scope

LetScope.kt
fun main() {
    val raw: String? = 
    val cleaned = raw?.let { value ->
        value.trim().toUpperCase()
    } ?: "EMPTY"

    println("raw=${raw ?: "none"}")
    println("cleaned=$cleaned")
}
fun main() {
    val raw: String? = 
    val cleaned = raw?.let { value ->
        value.trim().toUpperCase()
    } ?: "EMPTY"

    println("raw=${raw ?: "none"}")
    println("cleaned=$cleaned")
}
fun main() {
    val raw: String? = 
    val cleaned = raw?.let { value ->
        value.trim().toUpperCase()
    } ?: "EMPTY"

    println("raw=${raw ?: "none"}")
    println("cleaned=$cleaned")
}
let `let` can transform a present value while safe calls and Elvis provide the null path.