2015-06-01 3 views
2

Рассмотрим следующий цикл, который представляет собой «окрестность»Для цикла продолжить

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 
} 

, как вы можете видеть, я хотел бы получить переназначение на валь ошибки компиляции. В Java я бы «продолжал» пропустить это.

Что было бы изящным решением?

ответ

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)) { 
    ... 
} 

Я думаю, что первый из них является более удобным для чтения, хотя.

Смежные вопросы