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

相关文章
|
10月前
|
设计模式 Java Kotlin
Kotlin 中的 run 函数详解
Kotlin 中的 run 函数详解
332 0
|
10月前
|
安全 Kotlin
Kotlin中的安全导航操作符?.、空合并运算符?:以及let函数的实践与理解
Kotlin中的安全导航操作符?.、空合并运算符?:以及let函数的实践与理解
|
11月前
|
Kotlin
Kotlin - 标准函数(with、run和apply)
Kotlin - 标准函数(with、run和apply)
86 1
|
Kotlin
Kotlin中标准库函数(apply、let、run、with、also、takeIf、takeUnless)的使用详解
Kotlin中标准库函数(apply、let、run、with、also、takeIf、takeUnless)的使用详解
158 0
|
XML Java Android开发
Kotlin作用域函数let、with、run、apply、also
Kotlin作用域函数let、with、run、apply、also
109 0
|
Kotlin
Kotlin 作用域函数之let、with、run、also、apply的使用笔记
`Kotlin` 标准库包含几个函数,目的是在对象的上下文中执行代码块。**当对一个对象调用这样的函数并提供一个 `lambda` 表达式时,会形成一个临时作用域。在此作用域中,可以访问该对象而无需其名称。这些函数称为作用域函数**。共有以下五种:`let、run、with、apply 以及 also`。
270 0
|
存储 缓存 算法
Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)
Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)
378 0
Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)
|
C++ Kotlin Windows
Kotlin标准函数run with let also apply的区别
Kotlin标准函数run with let also apply的区别
Kotlin标准函数run with let also apply的区别
|
6月前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
127 1
|
7月前
|
Android开发 开发者 Kotlin
告别AsyncTask:一招教你用Kotlin协程重构Android应用,流畅度飙升的秘密武器
【9月更文挑战第13天】随着Android应用复杂度的增加,有效管理异步任务成为关键。Kotlin协程提供了一种优雅的并发操作处理方式,使异步编程更简单直观。本文通过具体示例介绍如何使用Kotlin协程优化Android应用性能,包括网络数据加载和UI更新。首先需在`build.gradle`中添加coroutines依赖。接着,通过定义挂起函数执行网络请求,并在`ViewModel`中使用`viewModelScope`启动协程,结合`Dispatchers.Main`更新UI,避免内存泄漏。使用协程不仅简化代码,还提升了程序健壮性。
235 1