当我运行我的scala代码(我正在使用SBT)时,在输入如下所示的文本后显示提示:
C:\... > sbt run
[info] Loading project definition [...]
[info] Set current project to [...]
Running com[...]
test
>>
exit
>> >> >> >> >> >> [success] Total time[...]
似乎它正在堆叠 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
}
...
这里发生了什么?
答案 0 :(得分:7)
print
(和println
)的输出可以缓冲。 Scala通过java.io.PrintStream
发送输出,这表明它只会在换行时自动刷新,然后才会询问。但是,它可能依赖于操作系统,因为我的print
会立即出现。
如果在每个Console.out.flush
之后添加print
,则会将缓冲区清空到屏幕上(在任何操作系统上)。