美文网首页
kotlin的一些坑点记录

kotlin的一些坑点记录

作者: ReminderFish | 来源:发表于2020-05-16 23:41 被阅读0次

1,?:使用

liveData?.let {
            LogUtil.i("liveData is not null")
        } ?: run {
            LogUtil.i("liveData is  null")
        }

这样的代码想要的结果:

  • liveData ! = null 执行 LogUtil.i("liveData is not null")
  • liveData = null 执行 LogUtil.i("liveData is null")

这里有个坑:当let{ ……}中返回null时,注意:let{ ……}会把lambada最后一行的返回值当做整个表达式的返回值

先执行LogUtil.i("liveData is not null")
再执行LogUtil.i("liveData is  null")

代码示例:

var liveData: MutableLiveData<Int>? = MutableLiveData()
        liveData?.let {
            LogUtil.i("liveData is not null")
            null//任何可能返回为null的表达式
        } ?: run {
            LogUtil.i("liveData is  null")
        }

原因分析:

expression1 ?:expression2表达式的含义是
expression1 ==null 时才执行expression2
expression1 !=null 时只执行expression1

上面的 expression1 = liveData?.let {
            LogUtil.i("liveData is not null")
            null //任何可能返回为null的表达式
        }
liveData==null或者let{ ……}==null
expression1 为null,则expression2执行

相关文章

网友评论

      本文标题:kotlin的一些坑点记录

      本文链接:https://www.haomeiwen.com/subject/gswdohtx.html