我可以在Scala REPL中停止执行无限循环吗?

Adr*_*ian 26 scala read-eval-print-loop

我可以在Scala REPL中停止执行无限循环吗?键入此并尝试在不退出REPL的情况下停止它.

while(true){}
Run Code Online (Sandbox Code Playgroud)

我认为像Ctrl-C这样的东西会起作用.

Ste*_*fen 12

这取决于你的scala版本.如果你已经在scala 2.9上,只需使用CTRL-C即可.命令到达REPL可能需要一些时间,但它会在某个时间中止你的无限循环.

如果你使用旧版本的scala(2.9之前).没有办法停止执行.在这些版本上,CTRL-C将导致整个scala REPL的终止.

Scala 2.9.0.RC2引入了这一变化.有关更多详细信息,请参阅更改日志(部分:Repl改进).

这在Windows上不起作用,因为scala窗口分发的Scala REPL键绑定会使用"toggle overtype mode"覆盖CTRL-C.类型

 scala> :keybindings
Run Code Online (Sandbox Code Playgroud)

在Windows系统上查看此绑定的整个注释.我想这是Windows上的一个错误.

  • 我的Scala版本是2.9.2但不起作用 (8认同)
  • 参见 https://groups.google.com/forum/#!topic/scala-internals/PqK6GkZhJK0 似乎说这个能力在 2.10 之前的某个时间被删除了(?!)。而且 AFAICT 仍然没有修复:https://issues.scala-lang.org/browse/SI-6302 呃。 (3认同)