Kotlin笔记24--辅助工具let函数

let 函数是 Kotlin 的标准函数,它提供了函数式 API 的编程接口,并将原始对象作为参数传递到 Lambda 表达式中。

格式如下:

obj.let { obj ->
    // 具体的执行代码
}

示意说明:调用了 obj 对象的 let 函数,然后 obj 对象本身作为参数传入 Lambda 表达式,执行具体的代码逻辑。

接前文的判空辅助工具 ?. ,配合 let 函数使用,效果好极了。

如下代码,

fun testString(string: String?){
    println(string?.length)
    println(string?.startsWith("A"))
}

翻译过来,其实是这样的,受制于 ?. 操作符的限制,判空执行了两次,

fun testString(string: String?){
    if (string != null){
        println(string.length)
    }
    if (string != null){
        println(string.startsWith("a"))
    }
}

其实,只判空一次就够了,

fun testString2(string: String?){
    if (string != null){
        println(string.length)
        println(string.startsWith("a"))
    }
}

这样的话, ?. 操作符又用不上了。

那就结合 let 函数使用 ?. 操作符吧,

fun testString(string: String?){
    string?.let { str ->
        println(str.length)
        println(str.startsWith("a"))
    }
}

意思是:string 不为空时执行 let 函数的函数体;string 如果不为空,string 作为参数传入 let 函数体,str 就是 string 。

回顾下 Lambda 表达式规则,如果 Lambda 表达式参数列表只有一个参数,不必声明参数名,可以用 it 关键字代替 。

简化为,

fun testString4(string: String?){
    string?.let {
        println(it.length)
        println(it.startsWith("a"))
    }
}

这样,就完成了。


版权声明:本文为weixin_44021334原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。