kotlin反布尔安全铸造

比方说,我有一个对象响应。 现在我想检查一个布尔变量,成功,响应下做一个早期的回报是响应不成功。

if(response == null || !response.success){ return; } //Java version 

现在我想用Kotlin的无效安全检查如下

 if(response?.success ?: true){ return } 

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

我想你必须这样做

 if(!(response?.success ?: false)){ return; // null or failed } 

这相当于你的Java版本。

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

你也可以翻转条件

 response?.success?.let { // do something when success } 

请参阅Elvis操作员文档了解更多信息