Kotlin Extension Functions

Adding functionality to existing classes

Extension Function

fun String.addExclamation(): String { # extend String class
    return this + "!"
}
val text = "Hello".addExclamation() # returns "Hello!"

Extension with Parameters

fun String.repeat(n: Int): String { # extension with param
    return this.repeat(n)
}
val result = "Hi".repeat(3) # returns "HiHiHi"

Extension Properties

val String.lastChar: Char # extension property
    get() = this[this.length - 1]
val last = "Hello".lastChar # returns 'o'

Nullable Receiver

fun String?.orEmpty(): String { # extension on nullable type
    return this ?: ""
}
val name: String? = null
val result = name.orEmpty() # returns ""