由于某种原因,REPL控制台(工作表的右侧)没有打印出中间值
例如,这就是我所拥有的:
afterRendering
在REPL结果中,我只得到以下内容:
object test {
val obj = new MyObject(1)
obj.value
}
class MyObject(x: Int) {
def value = x
}
但是,我没有得到任何中间结果,例如我评估defined module test
.
.
.
defined class MyObject
我希望有类似的东西:
x.value
在> MyObject@14254345
> 1
之后
为什么这不打印出来的原因?
答案 0 :(得分:16)
在这种情况下最终为我工作的是什么(这可能是IntelliJ 14特有的,因为我已经看到它在Eclipse中以另一种方式工作)是我在对象块中添加了类,如下所示:
object test {
val obj = new MyObject(1)
obj.value
class MyObject(x: Int) {
def value = x
}
}
这会强制工作表中的REPL实例自动评估结果并在右侧打印出来。
答案 1 :(得分:8)
为了让它像在Eclipse中一样工作,打开" eclipse兼容性"模式。这对我使用IntelliJ IDEA 2016很有用。
Preferences
> Language & Frameworks
> Scala
> Worksheet
然后,选中Use "eclipse compatibility" mode
复选框。
答案 2 :(得分:2)
抱歉,我没有足够的声誉发表评论,所以我必须在这里写。
如果你想得到你想要的结果,也许你可以尝试这样。
scala> :paste
// Entering paste mode (ctrl-D to finish)
object test {
val obj = new MyObject(1)
println(obj.value)
}
class MyObject(x: Int) {
def value = x
}
// Exiting paste mode, now interpreting.
defined object test
defined class MyObject
scala> test.obj
1
res4: MyObject = MyObject@1cd072a9
当您粘贴代码时,测试和MyObject未初始化,当然您无法获得任何打印。 test.obj将导致测试被初始化,因此obj,同时,obj.value也会得到评估。但是,如果你不喜欢它(比如打印),它只是一个纯粹的表达。
答案 3 :(得分:1)
上述答案中的修改很少,因为我在我的Intellij Idea 16(idea-IC-163.12024.16)中找不到Preference选项。只需打开" eclipse兼容性"模式如下:
档案>设置>语言与框架> Scala>工作表