我写了一个条件如下
if (subsriber?.isUnsubscribed && isDataEmpty()) {
loadData()
}
Run Code Online (Sandbox Code Playgroud)
因为我的订阅者可能为null.显示上述标题错误.所以我把它如下所示
if (subsriber?.isUnsubscribed as Boolean && isDataEmpty()) {
loadData()
}
Run Code Online (Sandbox Code Playgroud)
看起来不太好看.有没有更好的方法呢?
And*_*dEx 33
我通常会与?:运营商解决这种情况:
if (subsriber?.isUnsubscribed ?: false && isDataEmpty()) {
loadData()
}
Run Code Online (Sandbox Code Playgroud)
这样,如果subscriber是null,subsriber?.isUnsubscribed也是null并且subsriber?.isUnsubscribed ?: false评估false,希望是预期的结果,否则切换到?: true.
同时使用nullable类型进行转换as Boolean是不安全的,如果null遇到则会抛出异常.
另外,您是否还需要:kotlin.Boolean。找到:kotlin.Boolean?你可以这样做:
when(something?.isEmpty()) {
true -> { }
false -> { }
null -> { }
}
Run Code Online (Sandbox Code Playgroud)
另外,如果您只对一个简单的条件语句感兴趣
if(something?.isEmpty() == true){
this will only worked if not null && empty
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个已回答的问题,但对于将来的观看者会有所帮助
解决此问题的另一种方法是显式检查表达式是否为true:
if (subsriber?.isUnsubscribed == true && isDataEmpty()) {
loadData()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8634 次 |
| 最近记录: |