Kotlin学习——类与对象(二)

扩展

Kotlin能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式。这通过叫做扩展的特殊声明完成。

例如,可以为一个不能修改的、来自三方的库中的类编写一个新的函数。这个新增的函数就像那个原始本来就有的函数一样,可以用普通的方法调用。这种机制成为扩展函数。此外,也有扩展属性,允许为一个已经存在的类添加新的属性

扩展函数

声明一个扩展函数,需要用一个接收者类型也就是被扩展的类型来作为它的前缀。

下面代码为 MutableList 添加一个 swap 函数:

fun MutableList.swap(index1: Int, index2: Int){
    val tmp = this[index1]  //"this"对应列表
    this[index1] = this[index2]
    this[index2] = tmp
}

//这个 this 关键字在扩展函数内部对应到接收者对象(传过来的在点符号之前的对象)
//调用如下
val list = mutableListOf(1,2,3)
//swap()内部中的 this 会保存 list 的值
list.swap(0,2)


//当然我们可以泛化这个函数
//为了在接收者类型表达式中使用泛型,我们要在函数名前声明泛型参数
fun  MutableList.swap(index1: Int, index2: Int){
    val tmp = this[index1]
    this[index1] = this[index2]
    this[index2] = tmp
}

你可能感兴趣的:(Kotlin学习,kotlin,开发语言,android)