我正在寻找Scala中类似于getch的功能。在使用控制台时,我希望我的程序根据用户输入的字符显示信息(例如,如果我正在显示文本,则按n会显示下一页,按p会显示上一页)。目前我正在使用readLine或readChar,但它们要求用户在每次输入后按Enter键,有点烦人。此外,在Eclipse插件的解释器中,输入字符是可见的,尽管我想这可能是不可避免的。
scala.Console.readChar
,在当前版本的Scala中别名为Predef.getChar
,是最直接的方法。
scala> readChar
res0: Char = !
更新
这次不需要烦人的 Enter
:
scala> Console.in.read.toChar
res0: Char = !
使用 StdIn 库:
StdIn.readChar()
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
。 - cstroe您可以尝试使用Java 1.6版本中新增的Console。以下是REPL会话示例:
scala> val r = System.console().reader()
r: java.io.Reader = java.io.Console$LineReader@1d97efc
scala> r.read.toChar
res8: Char = t
reed
方法不需要按下Enter键,只要你按下键就会立即返回。