kotlin 使用let与run结合,等价于if 与else

简介: Kotlin 中?.let{}?:run{} 等价于 if{}else{}

kotlin语言真的太好了,写起来很简约,很轻松,内联函数用起来很细滑,比如let。

val bean = Bean
bean?.let{
  Log.e(TAG,"bean不等于null")
}

我们使用let的时候,都是如上面的写法,但是但bean=null的时候,我们也需要输出日志,这个时候要怎么写的?
正常是这么修改的

val bean = Bean
if(null != bean){
  Log.e(TAG,"bean不等于null")
}else{
  Log.e(TAG,"bean等于null")
}

但是这样子就变回了if加else的语法,完全脱离let内联函数了,有没有别的写法呢,答案当然是有的,使用let+run结合,可以这么写

val bean = Bean
bean?.let{
  Log.e(TAG,"bean不等于null")
}?:run{
  Log.e(TAG,"bean等于null")
}

这样子即保留Kotlin的语法,也使用到了内联函数,以上?.let + ?:run 等价于if+else

相关文章
|
Kotlin
Kotlin - 标准函数(with、run和apply)
Kotlin - 标准函数(with、run和apply)
293 1
|
设计模式 Java Kotlin
Kotlin 中的 run 函数详解
Kotlin 中的 run 函数详解
680 0
|
安全 Kotlin
Kotlin中的安全导航操作符?.、空合并运算符?:以及let函数的实践与理解
Kotlin中的安全导航操作符?.、空合并运算符?:以及let函数的实践与理解
328 0
|
Kotlin
Kotlin中标准库函数(apply、let、run、with、also、takeIf、takeUnless)的使用详解
Kotlin中标准库函数(apply、let、run、with、also、takeIf、takeUnless)的使用详解
360 0
|
存储 缓存 算法
Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)
Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)
749 0
Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)
|
XML Java Android开发
Kotlin作用域函数let、with、run、apply、also
Kotlin作用域函数let、with、run、apply、also
279 0
|
C++ Kotlin Windows
Kotlin标准函数run with let also apply的区别
Kotlin标准函数run with let also apply的区别
Kotlin标准函数run with let also apply的区别
|
Kotlin
Kotlin 作用域函数之let、with、run、also、apply的使用笔记
`Kotlin` 标准库包含几个函数,目的是在对象的上下文中执行代码块。**当对一个对象调用这样的函数并提供一个 `lambda` 表达式时,会形成一个临时作用域。在此作用域中,可以访问该对象而无需其名称。这些函数称为作用域函数**。共有以下五种:`let、run、with、apply 以及 also`。
642 0
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
590 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
1172 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?