我爱编程

kotlin扩展函数

2018-06-08  本文已影响0人  哈哈_defb

简介

Kotlin的扩展函数功能使得我们可以为现有的类添加新的函数,实现某一具体功能 。
扩展函数是静态解析的,并未对原类添加函数或属性,对类本身没有任何影响。
扩展属性允许定义在类或者kotlin文件中,不允许定义在函数中。

使用

fun Any.show(string: String) {
    println(string)
}
fun Extend.show2(string: String){
    println(string)
}
class Extend {

}
fun main(args: Array<String>) {
    Extend().show("我是扩展函数")
    Extend().show2("我是扩展函数")
}

扩展属性

类的扩展属性原理其实与扩展方法是一样的,只是定义的形式不同,扩展属性必须定义get和set方法,并且类似于接口中定义的变量,没有backingfield,即没有field关键字,不能用来存储变量。(一般的类属性,在其对象实例中都会分配一点内存来存储属性的值。

fun main(args: Array<String>) {
    val str = "aa"
    //没有backing field,不能存储值,其实际是通过setXXX(str,10)操作str
    //输出:aa10
    str.s = 10

    //输出:2
    println(str.s)
}

var String.s: Int
    get() = this.length
    set(value){
        //set方法并没有field可以用来存储value,
        //其实际作用是使用通过value来操作调用者,即this
       //plus二元操作符a+b
        println(this.plus(value))
    }
上一篇 下一篇

猜你喜欢

热点阅读