xxxxxxxxxx
Kotlin provides the ability to extend a class with new functionality without
having to inherit from the class or use design patterns such as Decorator.
This is done via special declarations called extensions.
fun MutableList<Int>.swap(index1: Int, index2: Int) {
val tmp = this[index1] // 'this' corresponds to the list
this[index1] = this[index2]
this[index2] = tmp
}
xxxxxxxxxx
fun Int.increment(): Int {
return this+1
}
fun Boolean.invert(): Boolean {
return xor(true) // a xor true = !a, by the conditional inversion property of xor.
}