Chr*_*est 0 scala for-comprehension
我有以下程序:(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)
}
}
Run Code Online (Sandbox Code Playgroud)
它产生这样的输出:List((-1,-1), (-1,1), (1,-1), (1,1))
我本来期望它只能过滤掉值,其中a和b是两个 0 -不是所有的值,其中任一 a或者b是0.
我可以通过将if子句改为此来获得我想要的行为:if (a,b) != (0,0)- 但是,我真的应该这样做吗?这是一个错误还是这种故意行为?举个例子,我对此感到惊讶.
您拥有的过滤器的真值表是:
a==0 | b==0 | (a!=0 && b!=0)
--------------------------------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
Run Code Online (Sandbox Code Playgroud)
而你说你想要的行为是:
a==0 | b==0 | !(a==0 && b==0)
--------------------------------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |