Как использовать ключевое слово continue для перехода к началу al oop in Scala - PullRequest
0 голосов
/ 29 февраля 2020

Как использовать ключевое слово continue для перехода к началу al oop в Scala?

while(i == "Y") {
    println("choose an item id between 1 and 4")
    val id = scala.io.StdIn.readInt()
    if(id >= 5) {
        println("not a valid id. please choose again")
        continue
    }
}

Я знаю, что есть абстракции, которые можно ломать и прерывать, предоставляемые Scala, но это не похоже чтобы достичь моей функциональности.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2020

В функциональном программировании рекурсия имеет вид l oop, поэтому рассмотрим следующий подход

@tailrec def readInputRecursively(count: Int): Option[Int] = {
  if (count == 0) {
    println("Failed to choose correct id")
    None
  } else {
    println(s"choose an item id between 1 and 4 ($count remaining attempts)")
    val id = StdIn.readInt()
    if (id >= 5) readInputRecursively(count - 1) else Some(id)
  }
}

readInputRecursively(3).map { input =>
  // do something with input
}
1 голос
/ 29 февраля 2020

Как использовать ключевое слово continue для перехода к началу al oop в Scala?

В Scala нет ключевого слова continue, поэтому вы не можете использовать ключевое слово continue для перехода к началу al oop в Scala, и при этом вы не можете использовать его для чего-либо еще, поскольку вы не можете использовать то, что не существует.

...