我在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
吗?
答案 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)