首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要: kotlin.Boolean。发现: kotlin.Boolean?

需要: kotlin.Boolean。发现: kotlin.Boolean?
EN

Stack Overflow用户
提问于 2016-04-07 02:24:38
回答 4查看 19K关注 0票数 19

我写了一个条件如下

代码语言:javascript
复制
    if (subsriber?.isUnsubscribed && isDataEmpty()) {
        loadData()
    }

因为我的订户可能是空的。显示上述标题错误。所以我把它投到下面

代码语言:javascript
复制
    if (subsriber?.isUnsubscribed as Boolean && isDataEmpty()) {
        loadData()
    }

看起来不太好。有更好的方法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-04-07 03:02:11

我通常使用?:操作符解决这种情况:

代码语言:javascript
复制
if (subsriber?.isUnsubscribed ?: false && isDataEmpty()) {
    loadData()
}

这样,如果subscribernullsubsriber?.isUnsubscribed也是nullsubsriber?.isUnsubscribed ?: false计算结果是false,希望这是预期的结果,否则切换到?: true

另外,使用as Boolean强制转换可空类型是不安全,如果遇到null,将引发异常。

票数 40
EN

Stack Overflow用户

发布于 2017-09-29 17:20:03

另外,您还需要:kotlin.Boolean。发现: kotlin.Boolean?你可以这样做:

代码语言:javascript
复制
when(something?.isEmpty()) {
    true ->  {  }
    false -> {  }
    null ->  {  }
}

另外,如果您只对感兴趣,那么只需要一个简单的条件语句

代码语言:javascript
复制
if(something?.isEmpty() == true){
  this will only worked if not null && empty
}

我知道这是个问题,但对于未来的观众来说是有帮助的

票数 12
EN

Stack Overflow用户

发布于 2018-08-15 18:17:22

解决此问题的另一种方法是显式检查表达式是否为true

代码语言:javascript
复制
if (subsriber?.isUnsubscribed == true && isDataEmpty()) {
    loadData()
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36465626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档