kotlin逆布尔安全铸造

时间:2017-11-10 00:11:42

标签: kotlin null-check kotlin-null-safety

我们说我有一个对象响应。现在我想检查一个布尔变量,成功,在Response下并做一个早期返回是响应不成功。

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

现在我想像以下一样使用Kotlin的无效安全检查

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

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

1 个答案:

答案 0 :(得分:6)

我认为你必须这样做

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

等同于您的java版本。

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

你也可以翻转条件

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

see the Elvis operator doc for more info