kotlin逆布尔安全铸造

Yao*_*Yao 4 null-check kotlin kotlin-null-safety

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

if(response == null || !response.success){
   return;
} //Java version
Run Code Online (Sandbox Code Playgroud)

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

if(response?.success ?: true){
    return
}
Run Code Online (Sandbox Code Playgroud)

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

pt2*_*121 6

我想你必须这样做

if(!(response?.success ?: false)){
    return // null or failed
}
Run Code Online (Sandbox Code Playgroud)

这相当于你的java版本.

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

你也可以翻转这个条件

response?.success?.let {
  // do something when success
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Elvis操作员文档

  • 我认为你非常正确地说,explicate null check版本更容易阅读. (2认同)