Scalastyle(的IntelliJ 2016.1默认值)表示,这布尔表达式可以简化Scalastyle布尔表达式可以简化
val t = Option(true)
val f = Option(false)
if(t.contains(true) && f.contains(false)) {
println("booop")
}
我可以通过改变摆脱这个如果到:
if(t.contains(true).&&(f.contains(false)))
或者通过改变& &改为&
但是不是真的看到这是如何简化它,任何人都可以解释ñ发生了什么事?
更新 它似乎没有关系,如果VAL是编译时已知的,或者它们是本地定义的。下面的代码也得是警告,该表达式可以simplfied:
object TestFoo {
def bar(t: Option[Boolean]) = {
val f = Option(scala.util.Random.nextBoolean)
if (t.contains(true) && f.contains(false)) println("booop")
}
def main(args: Array[String]) = bar(t = Option(scala.util.Random.nextBoolean))
}
我只是不明白,我应该怎样做,任何简单,有一些奇怪的选项[布尔]比较我错过了?
我觉得,既然你声明的值,并且仅使用它们那里,它希望你在网上这些值在你的'if'语句中 – hasumedic
看起来不像变量被定义的地方,或者在编译时知道该值是重要的。用另一个示例更新 – klogd
当您使用中缀表示法时会发生什么?例如'(t包含true)&&(f包含false)' – hasumedic