lambda 标准函数

标准函数let,run,with,also 和 apply

一、let 函数

必须让某个对象调用,接收一个 Lambda 表达式参数,Lambda 表达式中的参数为当前调用者,it可表示当前调用对象,且最后一行代码作为返回值

val person = Person("yrdz", 24)
    val a = person.let {
        it.age
        it.name  
    }
    print(a) // 输出"yrdz“

二、run 函数

必须让某个对象调用,接收一个 Lambda 表达式参数,Lambda 表达式中拥有当前调用对象的上下文 this ,且最后一行代码作为返回值。

与let相似

三、with 函数

接收两个参数,第一个为任意类型参数,第二个为 Lambda 表达式参数,Lambda 表达式中拥有第一个参数的上下文 this ,且最后一行代码作为返回值

var list: MutableList<Int>? = mutableListOf(2, 3)
val withReturnValue = with(list) {
    this?.add(50)
    50
}
println(withReturnValue)
println(list)

结果:println(withReturnValue)  :  50 

           println(list): [2,3,50]

with 最后一行作为返回值

四、also 函数

必须让某个对象调用,接收一个 Lambda 表达式参数,Lambda 表达式中的参数为当前调用者,无法指定返回值,这个函数返回的是当前调用对象本身

五、apply 函数

必须让某个对象调用,接收一个 Lambda 表达式参数,Lambda 表达式中拥有当前调用对象的上下文 this ,无法指定返回值,这个函数返回的是当前调用对象本身。

接上with函数

val applyReturnValueList = list?.apply {
    add(80)
    100
}

print(list)
print(applyReturnValueList)

结果:println(list) :[2,3,50,80]

           println(applyReturnValueList):[2,3,50,80]

apply函数返回值是调用对象本身

小结区别:

  • lei、with、run最后一行为返回值
  • aslo,apply返回调用对象本身

 

参考:(23条消息) “Kotlin“系列: 一、Kotlin入门_sweetying520的博客-CSDN博客

Kotlin中let、run、with、apply及also的差别

 

posted @ 2022-11-30 17:18  随易来了  阅读(33)  评论(0编辑  收藏  举报