IDEA不提供将空检查+点操作替换为'?',

9rygscc1  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(89)

我有下面的代码示例。
替换以下空检查+点操作

a != null && a.toInt() == b

使用?.

a?.toInt() == b

“似乎”做同样的工作,甚至更清楚。
但是,正如您在图像中所看到的,IDEA并没有建议更换。
也许这两种表达方式并不对等?
示例代码:

fun main() {
    val a: String? = initA()
    val b = 1
    if (a != null && a.toInt() == b) {
        println("true")
    } else {
        println("false")
    }
}

屏幕电容:

9q78igpj

9q78igpj1#

当我点击帖子的那一刻,我明白了。
如果b的类型被更改为nullable,则意味着:

val b: Int?

这些表达不再是等价的。
如果ab都为空,则行为将有所不同。

相关问题