Scala REPL自动退出
Scala REPL的行为异常,或者这可能是预期的行为。创建大型机对象并将其可见性设置为true时,将显示一个窗口。但是,如果我关闭窗口,Scala REPL将退出到终端。示例会话:Scala REPL自动退出,scala,read-eval-print-loop,Scala,Read Eval Print Loop,Scala REPL的行为异常,或者这可能是预期的行为。创建大型机对象并将其可见性设置为true时,将显示一个窗口。但是,如果我关闭窗口,Scala REPL将退出到终端。示例会话: ~$ scala scala> import swing._ scala> val frame = new MainFrame() scala> frame.visible = true ~$ //when I close the
~$ scala
scala> import swing._
scala> val frame = new MainFrame()
scala> frame.visible = true
~$ //when I close the window
我正在kubuntu上使用scala 2.9.1,如中所述:
关闭框架并在关闭时退出应用程序
(即,它关闭REPL运行的JVM。)
为了防止这种行为,您可以简单地使用框架
,或者覆盖关闭操作
方法
以下是参考资料:
/**
* A frame that can be used for main application windows. Shuts down the
* framework and quits the application when closed.
*/
class MainFrame extends Frame {
override def closeOperation() { sys.exit(0) }
}
这是
大型机
类本身,再加上系统的不太OO的行为。退出
这是大型机的全部源代码:
class MainFrame extends Frame {
override def closeOperation() { sys.exit(0) }
}
从这个角度看,很明显当窗口关闭时,System.exit
被调用,JVM将退出
如果你发现这一点时只是在试验,那么解决办法就是不要这样做!如果要在REPL中使用帧,则可以覆盖closeOperation
以不退出JVM,或者只使用frame
(因为大型机的唯一附加功能是JVM退出行为)