Scalastyle (intellij 2.016,1 Defaults) sagt dieses Boolesche AusdruckScalastyle Booleschen Ausdruck vereinfacht werden kann
vereinfacht werden kannval t = Option(true)
val f = Option(false)
if(t.contains(true) && f.contains(false)) {
println("booop")
}
ich davon bekommen kann, indem befreien das, wenn auf:
if(t.contains(true).&&(f.contains(false)))
Oder durch Ändern & & zu
Aber nicht wirklich sehen, wie dies vereinfacht es ist, könnte jemand erklären Was ist los?
Aktualisieren Es scheint nicht verwandt zu sein, wenn die Vals zum Zeitpunkt der Kompilierung bekannt sind, oder sie lokal definiert sind. Der folgende Code auch erhalten ist die Warnung, dass der Ausdruck simplfied werden kann:
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))
}
ich einfach nicht, wie ich angeblich zu machen, dass jeder einfacher, gibt es einige seltsame Option [Boolean] Vergleich Ich bin verpassen?
Ich denke, da Sie diese Werte sind zu erklären und mit ihnen nur dort, es erwartet Sie in-line Diese Werte in Ihrer 'if'-Anweisung – hasumedic
Seht nicht so aus, wo die Variablen definiert sind oder ob der Wert zur Kompilierzeit bekannt ist. Mit einem anderen Beispiel aktualisiert – klogd
Was passiert, wenn Sie die Infix-Notation verwenden? z.B. '(t enthält wahr) && (f enthält false)' – hasumedic