Kotlin中let, with, run, apply, also方法的使用总结

kermityeIP属地: 湖北
0.097字数 318阅读 657

Kotlin中let, with, run, apply, also方法的使用总结

调用方式 传递参数(it/this) 返回值
let 链式调用 it 计算结果
with 函数调用 this 计算结果
run 链式调用 this 计算结果
apply 链式调用 this 调用对象本身
also 链式调用 it 调用对象本身

链式调用及函数调用的区别

//链式调用
xx.let {
}
//函数调用
with(xx) {
}

总结:这个就不做详细说明了

传递参数it与this的区别

var person: Person? = null
var info = ""
person = Person("张三", 18)
info = person?.let{
    it.name = "xxx"
    it.age = 26
    "${it.name} 年龄为 ${it.age}"
}

info = person?.run {
    name = "xxx"
    age = 28
    "$name 年龄为 $age"
}

总结:当函数内需要多次引用调用对象,或者调用其方法或对其参数赋值时可以选择使用run,而如果只是引用一下调用对象,或直接调用对象本身,比如我只需要打印上述person的内容,那么直接使用let就可以了

返回值为计算结果与调用对象本身的区别

val person = Person("张三", 18)
val info: String = person.run {
    name = "李四"
    age = 28
    "$name 年龄为 $age"
    //this
}
println(info)

val person1 = person.apply {
    name = "李四"
    age = 28
    "$name 年龄为 $age"
    //apply的效果也相当于是run方法的返回值为this
}

总结:如上代码所示,方法体内都是同样的代码,但是一个返回的是最后的结果也就是String,而一个返回的是对象的本身,也就是Person对象。不同的是run可以返回任意想要的数据类型,而apply只能返回调用对象本身而已。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
1人点赞
更多精彩内容,就在简书APP
"小礼物走一走,来简书关注我"
还没有人赞赏,支持一下
kermityekermitye@163.com
总资产6共写了3404字获得82个赞共16个粉丝

推荐阅读更多精彩内容