首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >kotlin逆布尔安全铸造

kotlin逆布尔安全铸造
EN

Stack Overflow用户
提问于 2017-11-10 00:11:42
回答 2查看 3.5K关注 0票数 4

假设我有一个目标反应。现在我想检查一个布尔变量,成功,在响应下做一个早期返回是不成功的。

代码语言:javascript
运行
复制
if(response == null || !response.success){
   return;
} //Java version

现在,我想使用Kotlin的空安全检查,如下所示

代码语言:javascript
运行
复制
if(response?.success ?: true){
    return
}

如果我没有错,如果响应或成功为null,我们将在If条件内返回true。但是,如果response.success不是null,等于true,我们仍然会从函数返回,这不是我想要的。如何纠正这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-10 00:25:13

我觉得你必须做

代码语言:javascript
运行
复制
if(!(response?.success ?: false)){
    return // null or failed
}

这相当于您的java版本。

但是请注意:如果null 检查版本更容易阅读。你也可以在Kotlin中使用它,

您也可以翻转条件。

代码语言:javascript
运行
复制
response?.success?.let {
  // do something when success
}

有关更多信息,请参见猫王操作员文档。

票数 7
EN

Stack Overflow用户

发布于 2022-04-20 15:41:54

很老的问题,但我只是被它绊倒了。以下可能是最短的if子句:

代码语言:javascript
运行
复制
if (response?.success != true) {
   //There is either no response, or it was not successful
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47213757

复制
相关文章

相似问题

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