Scala工作表不会在IntelliJ IDEA 2016.2中评估对象

时间:2016-09-14 09:50:38

标签: scala intellij-idea

这个非常简单的工作表内容演示了这个问题:

object Test {
 println("This does not print!")
  add(5, 6)
}

println("This however prints!")
add(5, 6)

def add(a: Int, b: Int): Int = a + b

以上工作表内容的结果如下:

defined module Test

This however prints!
res0: Unit = ()
res1: Int = 11

add: add[](val a: Int,val b: Int) => Int

基于JetBrains official website Scala Worksheets example以及我发现的所有其他可靠资源(如Martin Odresky's own examples in Functional Programming in Scala course),我希望object Test的内容能够执行。我的软件是:

  • OS X El Capitan
  • IntelliJ IDEA 2016.2
  • SBT插件1.8.0
  • SBT版本0.13.12
  • Scala Plugin 2016.2.1
  • Scala版本2.11.8

3 个答案:

答案 0 :(得分:5)

如果所有代码都在该对象内,则scala工作表将执行对象测试{...}的内容。如果对象外部有一些代码,它将只定义Test对象(而不是运行它)。

@RequestMapping(value = {"/comic", "/comic/{uuId}", "/comic/"} , method = RequestMethod.GET)

答案 1 :(得分:5)

我认为这就是你想要的:

object Test {
  println("This does not print!") 
  add(5, 6)

  println("This however prints!")
  add(5, 6)

  def add(a: Int, b: Int): Int = a + b
}

工作表的工作原理是,如果您定义一个对象而没有在object范围之外定义任何内容,则它将以Test extends App的形式执行。这是intellij页面显示的内容

如果在object范围之外有任何语句,则将其视为任何其他object,编译器将像其他任何内容一样初始化它。这就是你所经历的。

答案 2 :(得分:0)

我能够通过更改Scala工作表设置来评估Scala工作表。

  • 将运行类型更改为普通(最初是REPL)

您可以通过单击Scala工作表上的设置图标来进入设置。