如何停止按Ctrl-d一个REPL般的控制台应用程序,而无需等待用户输入CTR-D,然后输入一个程序?斯卡拉:如何停止的时候按Ctrl-d按下
下面是一个代码示例:
def isExit(s: String): Boolean = s.head.toInt == 4 || s == "exit"
def main(args: Array[String]) = {
val continue: Boolean = true
while(continue){
println "> "
io.StdIn.readLine match {
case x if isExit(x) => println "> Bye!" ; continue = false
case x => evaluate(x)
}
}
}
的s.head.toInt == 4
是测试如果输入行的第一个字符是一个CTRL d。
编辑:完整的源代码来运行它:
object Test {
def isExit(s: String): Boolean = s.headOption.map(_.toInt) == Some(4) || s == "exit"
def evaluate(s: String) = println(s"Evaluation : $s")
def main(args: Array[String]) = {
var continue = true
while(continue){
print("> ")
io.StdIn.readLine match {
case x if isExit(x) => println("> Bye!") ; continue = false
case x => evaluate(x)
}
}
}
}
有了这个,我上了s.headOption一个NullPointerException
的's'仍然'null'上'isExit'上的CTRL-d的值,所以仍存在的NullPointerException。 – aaaaaaa