4

当我运行我的 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
  }
...

这里发生了什么?

4

1 回答 1

9

print( 和)的输出println可以被缓冲。Scala 通过 发送输出java.io.PrintStream,这表明它只会在换行符上自动刷新,并且只有在您询问时才会刷新。不过,它可能取决于操作系统,因为 myprint立即出现。

如果Console.out.flush在 each 之后添加print,则会将缓冲区清空到屏幕(在任何操作系统上)。

于 2013-05-30T19:18:42.600 回答