初始Kotlin 之5__let

一. 定义  

let辅助工具,  let是一个函数。它提供了函数式API的编程接口, 并将原始调用对象作为参数传递到Lambda表达式中。 

语法如下:

obj.let{
    obj_ ->
   ...   //用户业务逻辑
}

这里调用了obj对象的let函数,然后Lambda表达式中的代码主会立即执行,并且这个obj对象本身还会作为参数传递到Lambda表达式中。不过,为了防止变量重名,这里将参数名改成了obj_, 实际上是同一个对象, 这就是let函数的作用。

let函数属于Kotlin中的标准函数。

二. 作用, let函数的 一个作用是与?.配合,可以在空指针检查 有效。

fun doLearn(learn: Learn?){
   learn?.let{
            learn_ ->
            learn_.readBooks()
            learn_.doSchoolwork()
        }
}

?.表示对象为空时什么都不做, 对象不为空时就调用let函数,   而let函数会交learn对象本身作为参数传递到Lambda表达式中,此时的learn对象肯定不空了。

当Lambda表达式的参数列表中只有一个参数时,可以不用声明参数名, 直接使用it关键字来代替即可,上述代码可以进一步简化成:

fun doLearn(learn: Learn?){
        learn?.let {
            it.readBooks()
            it.doSchoolwork()
        }
    }

三.  let函数是可以处理全局变量的判空问题的,但是使用 if 判断 则无法做到这一点。 例如我们将doLearn()的参数变成一个全局变量,使用 let函数仍然可以正常工作, 但使用 if 判断则会报错。

   var learn: Learn? =null
    
    fun doLearn(){
        learn?.let {
            it.readBooks()
            it.doSchoolwork()
        }
    }

使用if判断 

  

报错原因是: 全局变量的值随时都有可能被其他线程修改, 即使作了判断空处理,也无法保证if语句中的learn没有空指针风险。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值