0
我有以下程序:(斯卡拉2.9.2的Java6)斯卡拉爲理解如果過濾太多?
object Forcomp {
def main(args: Array[String]): Unit = {
val xs = List(-1, 0, 1)
val xss = for (a <- xs; b <- xs if a != 0 && b != 0) yield (a,b)
println(xss)
}
}
它產生以下輸出:List((-1,-1), (-1,1), (1,-1), (1,1))
我會它預期到a
和b
是僅濾除值兩者 0 - 並不是所有的值,其中要麼a
或b
爲0
我可以改變,如果從句這得到我想要的行爲:if (a,b) != (0,0)
- 但是,我應該真的有至?這是一個錯誤還是這種故意行爲?舉個例子,我對此感到驚訝。
您需要使用'(A == 0 && b! == 0)'來獲得你想要的行爲。 – Gareth
或'a!= 0 || b!= 0'基本上是[相同的](http://en.wikipedia.org/wiki/De_Morgan's_laws) –