4

假设我有一个对象响应。现在我想在响应下检查一个布尔变量成功,并提前返回响应不成功。

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

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

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

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

4

1 回答 1

7

我认为你必须做

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

这相当于你的java版本。

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

你也可以翻转条件

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

有关更多信息,请参阅 Elvis 操作员文档

于 2017-11-10T00:25:13.043 回答