Android Kotlin之let、with、run、apply、also函数的使用

前言

一、Kotin的lambda

 二、let函数

三、with函数

四、 run函数

五、 apply函数

六、 also函数

七、总

前言

        相比Java语言Kotlin更加简洁安全高效。不仅支持lambda表达式,还支持非空验证机制,另外提供一套源码标准库(Standard.kt)。但是,对于Kotlin的初学者来说,可能会经常写编写出不够优雅的代码,而Kotlin提供了一些内置函数便可以帮助优化代码。

        Standard.kt是Kotlin库的一部分,它定义了一些基本函数。 这个源代码文件虽然一共不到50行代码,但是这些函数功能都非常强大。


一、Kotin的lambda

        在Kotlin中对Java中的一些的接口的回调可以使用一个lambda函数做一些优化,减少一些不必要的嵌套回调方法。

        但是需要注意lambda表达式的规则,只支持单抽象方法模型,不支持多个回调方法。

1、Java代码接口的回调

 mView.setEventListener(new ExamPlanHomeEventListener(){
    public void onSuccess(Data data){
      //TODO
    }
 });


2、Kotlin实现接口的回调

mView.setEventListener(object: ExamPlanHomeEventListener{
    public void onSuccess(Data data){
      //TODO
    }
});

mView.setEventListener({
   data: Data ->
   //TODO
})

//或者可以直接省略Data,借助kotlin的智能类型推导
mView.setEventListener({
   data ->
    //TODO
})

//如果以上代码中的data参数没有使用到的话,可以直接把data去掉
mView.setEventListener({
  //TODO
})
//或
mView.setEventListener(){
   //TODO
}
//只有一个参数,可以直接省略圆括号
mView.setEventListener{
  //todo
}

可见十分的简洁。


 二、let函数

1、简介

        let函数实际上是一个作用域函数,当需要去定义一个变量在一个特定的作用域范围内时,就可以使用let函数。let函数只接收一个 Lambda 参数,并且会在 Lambda 函数块中提供调用对象的上下文。let函数另一个作用就是可以避免写一些判断null的操作。

2、示例

//在函数体内使用it替代object对象去访问其公有的属性和方法
object.let{
   it.todo()
   ...
}

//另一种用途 判断object为null的操作
object?.let{
   it.todo()//表示object不为null的条件下,才会去执行let函数体
}
//使用let前
mVideoPlayer?.setVideoView(activity.course_video_view)
mVideoPlayer?.setControllerView(activity.course_video_controller_view)
mVideoPlayer?.setCurtainView(activity.course_video_curtain_view)

//使用let后
mVideoPlayer?.let {
	   it.setVideoView(activity.course_video_view)
	   it.setControllerView(activity.course_video_controller_view)
	   it.setCurtainView(activity.course_video_curtain_view)
}

 3、分析

        从源码let函数的结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾阳Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值