kotlin inverse boolean safe casting
kotlin inverse boolean safe casting
假设我有一个对象 Response。现在我想检查一个布尔变量,成功,在 Response 下并尽早 return is response is not successful。
if(response == null || !response.success){
return;
} //Java version
现在我想像下面这样使用 Kotlin 的 null 安全检查
if(response?.success ?: true){
return
}
如果我没记错的话,如果 response 或 success 为 null,我们将 return 在 if 条件下为真。但是,如果 response.success 不为 null 且等于 true,我们仍然会从函数中 return ,这不是我想要的。我该如何纠正这种情况?
我认为你必须做
if(!(response?.success ?: false)){
return // null or failed
}
相当于您的 java 版本。
但注意:如果null
检查版本更容易阅读。您也可以在 Kotlin 中使用它
你也可以翻转条件
response?.success?.let {
// do something when success
}
很老的问题,但我只是偶然发现了它。
以下可能是最短的if子句:
if (response?.success != true) {
//There is either no response, or it was not successful
}
假设我有一个对象 Response。现在我想检查一个布尔变量,成功,在 Response 下并尽早 return is response is not successful。
if(response == null || !response.success){
return;
} //Java version
现在我想像下面这样使用 Kotlin 的 null 安全检查
if(response?.success ?: true){
return
}
如果我没记错的话,如果 response 或 success 为 null,我们将 return 在 if 条件下为真。但是,如果 response.success 不为 null 且等于 true,我们仍然会从函数中 return ,这不是我想要的。我该如何纠正这种情况?
我认为你必须做
if(!(response?.success ?: false)){
return // null or failed
}
相当于您的 java 版本。
但注意:如果null
检查版本更容易阅读。您也可以在 Kotlin 中使用它
你也可以翻转条件
response?.success?.let {
// do something when success
}
很老的问题,但我只是偶然发现了它。 以下可能是最短的if子句:
if (response?.success != true) {
//There is either no response, or it was not successful
}