我在Android Studio中写了以下函数:
if (startTimes.value?.containsKey(name)?:false) {
return startTimes?.value?.get(name)
}
Android Studio用警告信息Equality check should be used instead of elvis for nullable boolean check
突出显示if
的内容,并建议将其替换为:
if (startTimes.value?.containsKey(name) == true) {
return startTimes?.value?.get(name)
}
为什么第二个是IDE的首选?据我所知,它们在逻辑上是相同的。
检查true
或false
的可空布尔值是一个"官方的";芬兰湾的科特林成语:
Nullable布尔
val b: Boolean? = ... if (b == true) { ... } else { // `b` is false or null }
下面是关于这个成语的相关讨论,包括赞成和反对的意见。
第一步分为两步。它进行空检查,然后计算出一个值。第二个语句直接求值
就我个人而言,我认为第二种情况更容易推理。
"是x还是else如果x为空则为假,为真?">
和
"
除此之外,还有一些编译器试图强加给你的习惯用法,我认为这是为了使代码更容易读。如果大多数人使用相同的习惯用法,就更容易阅读彼此的代码。