当我运行我的 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
}
...
这里发生了什么?
最佳答案
来自 print
的输出(和 println
)可以缓冲。 Scala 通过 java.io.PrintStream
发送输出,这表明它只会在换行时自动刷新,然后仅在您询问时才自动刷新。不过,它可能取决于操作系统,因为我的 print
立即出现。
如果您添加 Console.out.flush
每个之后 print
,您会将缓冲区清空到屏幕上(在任何操作系统上)。
关于scala - SBT、println 和 Scala 控制台应用程序的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843429/