对于循环继续

时间:2015-06-01 18:55:27

标签: scala for-loop

考虑以下代表"邻居"

的循环
for(x <- -1 to 1; y <- -1 to 1)
{
   // If we are in the current field, just get the one above
   if((x == 0) && (y == 0)) y = 1 // Problem: Reassignment to val
}

如您所见,我将重新分配val编译错误。在Java中我会做&#34;继续&#34;跳过那个。

对此有什么优雅的解决方案?

1 个答案:

答案 0 :(得分:6)

使用警卫:

for (x <- -1 to 1; y <- -1 to 1; if !(x == 0 && y == 0)) {
    ...
}

可替换地:

for (x <- -1 to 1; y <- -1 to 1 by (if (x == 0) 2 else 1)) {
    ...
}

我认为第一个更具可读性。