Extensions
Extensions
Kotlin, similar to C# and Gosu, provides the ability to extend a class with new functionality without having to inherit from the class or use any type of design pattern such as Decorator. This is done via special declarations called extensions. Kotlin supports extension functions and extension properties.
Extension Functions
To declare an extension function, we need to prefix its name with a receiver type, i.e. the type being extended. The following adds a swap
function to MutableList<Int>
:
fun MutableList<Int>.swap(index1: Int, index2: Int) { val tmp = this[index1] // 'this' corresponds to the list this[index1] = this[index2] this[index2] = tmp }
The this keyword inside an extension function corresponds to the receiver object (the one that is passed before