tsj*_*nsn 3 io scala console-application sbt
当我运行我的scala代码(我正在使用SBT)时,在输入一些文本后会显示提示,如下所示:
C:\... > sbt run
[info] Loading project definition [...]
[info] Set current project to [...]
Running com[...]
test
>>
exit
>> >> >> >> >> >> [success] Total time[...]
Run Code Online (Sandbox Code Playgroud)
看起来它正在堆叠print()语句,只在运行不同的命令时才显示它们.
如果我使用println()它可以正常工作(除了我不想要换行)
代码:
...
def main(args:Array[String]) {
var endSession:Boolean = false
var cmd = ""
def acceptInput:Any = {
print(">> ")
cmd = Console.readLine
if (cmd != "exit") {
if (cmd != "") runCommand(cmd)
acceptInput
}
}
acceptInput
}
...
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
print(和println)的输出可以缓冲.Scala发送输出java.io.PrintStream,这表明它只会在换行时自动刷新,然后才会询问.但是,它可能依赖于操作系统,因为我print立即出现.
如果Console.out.flush在每次之后添加print,则会将缓冲区清空到屏幕上(在任何操作系统上).