Как пропустить итерацию в цикле for в Scala?

#scala #loops #iteration

Вопрос:

Например, в C вы могли бы написать

 for (int i = 0; i < 10 ; i  ) {
  if (i == 2) i  = 1
  // do stuff
}
 

Поскольку Scala использует диапазоны, как бы мы изменили итератор?

Ответ №1:

Вы можете использовать охрану:

 for (i <- 0 to 10; if i != 2) println(i)
 

Это приведет к печати чисел от 0 до 10, исключая 2.

Вы можете увидеть этот код в действии и поиграть с ним здесь, на Scastie.

Ответ №2:

У вас будет несколько решений, но в основном это должно выполняться с помощью предложения .filter() like где-то.

Как (0 to 10).filterNot(_ == 3).foreach(doStuff()) , например

Комментарии:

1. Это работает! Спасибо!

2. Отлично 🙂 не стесняйтесь отмечать, что один из ответов, который вы сочли уместным, принят 🙂 (если оба были, вы можете выбрать наугад, все в порядке 🙂 )

3. Спасибо 🙂 Я также вернусь, когда смогу проголосовать, чтобы озвучить оба ответа