在IntelliJ中以交互模式打印Scala工作表结果

ree*_*rix 14 scala intellij-idea read-eval-print-loop

由于某种原因,REPL控制台(工作表的右侧)没有打印出中间值

例如,这就是我所拥有的:

object test {
  val obj = new MyObject(1)
  obj.value 
}

class MyObject(x: Int) {
  def value = x
}
Run Code Online (Sandbox Code Playgroud)

在REPL结果中,我只得到以下内容:

defined module test
.
.
.
defined class MyObject
Run Code Online (Sandbox Code Playgroud)

但是,我没有得到任何中间结果,例如我评估时 x.value

我希望有类似的东西:

> MyObject@14254345
> 1 
Run Code Online (Sandbox Code Playgroud)

x.value

有什么理由不打印出来?

ree*_*rix 16

在这种情况下最终为我工作的是什么(这可能是IntelliJ 14特有的,因为我已经看到它在Eclipse中以另一种方式工作)是我在对象块中添加了类,如下所示:

object test {
  val obj = new MyObject(1)
  obj.value 

  class MyObject(x: Int) {
   def value = x
  }
}
Run Code Online (Sandbox Code Playgroud)

这会强制工作表中的REPL实例自动评估结果并在右侧打印出来.

  • 感谢您的帮助,因为我一直在寻找解决方案。但是作为 Scala 的新手,我不明白为什么会发生这种情况,因为我相信它在 Eclipse 中有效。顺便说一下,这个问题也发生在 IntelliJ15 中。 (2认同)

sjk*_*ing 9

要使其像在Eclipse中一样工作,请启用"eclipse兼容性"模式.这对我使用IntelliJ IDEA 2016有用.

Preferences> Language & Frameworks> Scala>Worksheet

然后,选中Use "eclipse compatibility" mode复选框.