Scala println无法使用App trait

Jam*_*hon 9 scripting scala println

当我使用scala App trait时,我无法使println工作.

这个简单的例子按预期打印,

object HelloWorld {
  def main(args: Array[String]) {
    println("Hello, world!")
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,一旦我介绍了它没有的特性,

object HelloWorld extends App {
  println("Hello, world!")
}
Run Code Online (Sandbox Code Playgroud)

我没有错误,但没有任何打印到控制台.

Kel*_*nis 10

你先编译它(运行scalac HelloWorld.scala)吗?见评论:http://www.scala-lang.org/node/9483#comment-40627

编辑添加更多解释:第一个版本实际编译.没有显式main方法的Scala文件作为脚本运行未编译.这意味着对于您的第二个版本,文件中的命令是按顺序运行的,就好像它们已经输入到解释器中一样 - 因此,创建了对象HelloWorld,但没有调用任何方法.这里有关于Scala作为脚本语言的更多信息(滚动到第5步):http://www.artima.com/scalazine/articles/steps.html


A. *_*bus 5

添加一行

object HelloWorld extends App {
  /* code */
}

HelloWorld.main(args)
Run Code Online (Sandbox Code Playgroud)

在你的文件的末尾.

Class定义了方法,但也需要调用它.