扩展函数

定义一个扩展函数,我们需要在函数名前加一个接收类型的前缀。比如,被扩张的类型,如下所示:

fun MutableList<Int>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] // 'this' corresponds to the list
    this[index1] = this[index2]
    this[index2] = tmp
}

上述代码定义了一个swap函数,这个函数属于MutableList<Int>

this关键字等价于接收类型,即点之前的调用类型,现在可以在任意的MutableList<Int>中调用swap函数。

val l = mutableListOf(1, 2, 3)
l.swap(0, 2)

为了增强这个函数的使用范围,我们采用泛型来增强这个函数的功能。

fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
    val tmp = this[index1]
    this[index1] = this[index2]
    this[index2] = tmp
}

results matching ""

    No results matching ""