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