如何退出stdin / stdout程序?

时间:2018-09-27 19:34:57

标签: scala

我在Scala中有以下代码需要改进:

await User.findByIdAndRemove(request.params.id, { strict: 'throw' }, (err, user) {
    if(err) throw err
})

该程序希望shouldContinue = true while (shouldContinue) { val input = StdIn.readLine() if (input == ":q") { shouldContinue = false // do things here } else { System.exit(1) } } 退出。可以代替:q而是一些内置功能来检测if (input == ":q"):q吗?

1 个答案:

答案 0 :(得分:1)

您可以编写一个尾部递归函数,该函数不会像while循环那样发生变化。您可以避免使用var变量。

import scala.io.StdIn._
import scala.annotation.tailrec
@tailrec
def tailRecursiveCheck(shouldExit: Boolean): Unit = {
  if(shouldExit) System.exit(0)
  else {
    val s = readLine
    tailRecursiveCheck(s == ":q" || s == ":quit")
  }
}
tailRecursiveCheck(false)