如何停止按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