在 IntelliJ 中以交互模式打印出 Scala 工作表结果
Print out Scala worksheet results in interactive mode in IntelliJ
出于某种原因,中间值未在 REPL 控制台(工作表右侧)中打印出来
例如,这是我的:
object test {
val obj = new MyObject(1)
obj.value
}
class MyObject(x: Int) {
def value = x
}
在 REPL 结果中,我只得到以下内容:
defined module test
.
.
.
defined class MyObject
但是,我没有得到任何中间结果,例如当我评估 x.value
我希望是这样的:
> MyObject@14254345
> 1
在x.value
之后
为什么没有打印出来?
对不起,我没有足够的声誉来发表评论,所以我不得不写在这里。
如果你想得到你想要的结果,也许你可以这样尝试。
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
粘贴代码时,test和MyObject都没有初始化,肯定打印不出来。
test.obj 将导致测试被初始化,因此 obj 也会被初始化,同时,obj.value 也会被评估。但是,如果你不做任何事情(比如打印),它只是一个纯粹的表达。
在这种情况下(这可能是 IntelliJ 14 特有的,因为我已经看到它在 Eclipse 中以另一种方式工作)最终对我有用的是我在对象块中添加了 class ,像这样:
object test {
val obj = new MyObject(1)
obj.value
class MyObject(x: Int) {
def value = x
}
}
这会强制工作表中的 REPL 实例自动计算结果并在右侧打印出来。
要使其像在 Eclipse 中一样工作,请打开 "eclipse compatibility" 模式。使用 IntelliJ IDEA 2016 这对我有用。
Preferences
> Language & Frameworks
> Scala
> Worksheet
然后,选中 Use "eclipse compatibility" mode
复选框。
出于某种原因,中间值未在 REPL 控制台(工作表右侧)中打印出来
例如,这是我的:
object test {
val obj = new MyObject(1)
obj.value
}
class MyObject(x: Int) {
def value = x
}
在 REPL 结果中,我只得到以下内容:
defined module test
.
.
.
defined class MyObject
但是,我没有得到任何中间结果,例如当我评估 x.value
我希望是这样的:
> MyObject@14254345
> 1
在x.value
为什么没有打印出来?
对不起,我没有足够的声誉来发表评论,所以我不得不写在这里。
如果你想得到你想要的结果,也许你可以这样尝试。
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
粘贴代码时,test和MyObject都没有初始化,肯定打印不出来。 test.obj 将导致测试被初始化,因此 obj 也会被初始化,同时,obj.value 也会被评估。但是,如果你不做任何事情(比如打印),它只是一个纯粹的表达。
在这种情况下(这可能是 IntelliJ 14 特有的,因为我已经看到它在 Eclipse 中以另一种方式工作)最终对我有用的是我在对象块中添加了 class ,像这样:
object test {
val obj = new MyObject(1)
obj.value
class MyObject(x: Int) {
def value = x
}
}
这会强制工作表中的 REPL 实例自动计算结果并在右侧打印出来。
要使其像在 Eclipse 中一样工作,请打开 "eclipse compatibility" 模式。使用 IntelliJ IDEA 2016 这对我有用。
Preferences
> Language & Frameworks
> Scala
> Worksheet
然后,选中 Use "eclipse compatibility" mode
复选框。