kotlin之扩展函数let,run,also,apply

个人博客:haichenyi.com。感谢关注

举个例子

open class Person {
    var name: String = ""
    var age: Int = 0
    var address: String = ""

    override fun toString(): String {
        return "Person($name)"
    }
}

  新建一个Person类,有三个属性,重写了toString方法。

  这里有个关键字open,只有用open标识的类才能被继承。

var person1 = Person().let {
    it.name = "张三let"
    it.age = 24
    it.address = "浦东新区"
    10
}

Log.v("wz", person1.toString())//10
var person2 = Person().run {
    this.name = "张思run"
    this.age = 25
    this.address = "青浦区"
    20
}
Log.v("wz", person2.toString())//20

var person3 = Person().also {
    it.name = "张武also"
    it.age = 26
    it.address = "黄浦区"
    30
}
Log.v("wz",person3.toString())//Person(张武also)

var person4 = Person().apply {
    this.name = "张柳apply"
    this.age = 27
    this.address = "崇明区"
    40
}
Log.v("wz",person4.toString())//Person(张柳apply)

上面打印的结果:

person1——let——10

person2——run——20

person3——also——Person(张武also)

person4——apply——Person(张柳apply)

总结:

  1. let,run以最后一行的结果为返回值;also,apply返回对象本身。
  2. 在他们的方法体中,let,also用it代指本身;run,apply用this代指本身。

PS:充分了解他们的用法,以及返回值的区别,可以实现链式调用实现功能模块,使代码清晰,一目了然。

你可能感兴趣的:(kotlin)