Kotlin 安全运算符 ?. 与 let 函数 及 Elvis运算符 ?:

1. 安全运算符 ?.Elvis运算符 ?: 配合使用

   nimAccount = teacher?.nim()?.accid() ?: "jake"
   nimToken = teacher?.nim()?.token() ?: "test"

上述代码 等价于 如下代码 :

     if (teacher != null && teacher.nim() != null && teacher.nim()!!.accid() != null) {
           nimAccount = teacher.nim()!!.accid()
     } else {
           nimAccount = "jake"
     }

     if (teacher != null && teacher.nim() != null && teacher.nim()!!.token() != null) {
           nimToken = teacher.nim()!!.token()
     } else {
           nimToken = "test"
     }
安全运算符 ?.
s?.toUpdate()   <=两者等价=>   if (s!=null) s?.toUpdate() else null
Elvis运算符 ?: 请看这篇文章

两者结合,功能强大。

2. 安全运算符 ?.let函数 配合使用

   nimAccount?.let {
       registerMsgRevokeFilter(it)
       //      注册撤回观察者
       registerMsgRevokeObserver()
    }

上述代码等价于

      if (nimAccount!=null){
            registerMsgRevokeFilter(nimAccount!!)
            //      注册撤回观察者
            registerMsgRevokeObserver()
        }

你可能觉得使用 let函数 并没有方便多少,
但这两种方式都可以实现 将可空类型的参数传递给非空函数

let函数

功能:把一个调用它的对象变成lambda表达式,常结合安全运算符使用。
安全调用"let"只在表达式不为null时,执行lambda

使用let函数,可以使代码更优雅~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容