2011-06-06 52 views
25

我可以停止在Scala REPL中執行無限循環嗎? 輸入此名稱並嘗試在不退出REPL的情況下停止它。我可以停止在Scala REPL中執行無限循環嗎?

while(true){} 

我認爲像Ctrl-C的東西會起作用。

+0

Ctrl-C適用於Mac OS X. – Jonas 2011-06-06 07:25:38

+3

Ctrl-C和Ctrl-Break在Windows 7上不起作用 – Adrian 2011-06-06 07:29:39

+1

您正在使用哪個版本的Scala?在2.9版本中有一些改進,這樣可以在不退出REPL的情況下運行。也可以在Windows中使用Ctrl-C。 *編輯* - 只是在Windows Vista上的Scala 2.9.0.1上試用過,實際上Ctrl-C不起作用... – Jesper 2011-06-06 08:05:50

回答

11

這取決於你的Scala版本。如果你已經在使用Scala 2.9,那麼只需使用CTRL-C就可以工作。命令到達REPL可能需要一段時間,但它會在某個時間中止您的無限循環。

如果您使用的是舊版本的scala(2.9之前版本)。沒有辦法停止執行。在這些版本中,CTRL-C將導致整個scala REPL的終止。

此更改是在Scala 2.9.0.RC2中引入的。有關更多詳細信息,請參閱changelog (part: Repl Improvements)

這不適用於Windows,因爲Scala窗口分佈的Scala REPL鍵綁定覆蓋CTRL-C和「切換改寫模式」。類型

scala> :keybindings 

在Windows系統上查看該綁定的整個評論。我想這是Windows上的一個錯誤。

+8

我的Scala版本是2.9.2,但不起作用 – 2012-09-26 22:35:05

+0

它不適用於Scala 2.11.8解釋器(在Mac OS X Terminal上運行)。我嘗試了'Stream.from(1)foreach println'並敲擊Ctrl-C。它中止了整個過程。 – ShreevatsaR 2016-09-30 16:48:25

+1

請參閱https://groups.google.com/forum/#!topic/scala-internals/PqK6GkZhJK0,這似乎表示此功能在2.10之前被刪除(?!)了一段時間。而AFAICT還沒有修復:https://issues.scala-lang.org/browse/SI-6302呃。 – ShreevatsaR 2016-09-30 17:09:15