私は次のプログラムを持っています:(Scala 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))
0
である値のみを除外することを期待していましたが、またはが0であるすべての値ではありません。a
b
a
b
if-clauseを次のように変更することで、必要な動作を得ることができます。–if (a,b) != (0,0)
しかし、本当にそうする必要がありますか?これはバグですか、それとも意図的な動作ですか?私は、これに驚いた。