9

当我使用 scala App特征时,我无法让 println 工作。

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

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

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

object HelloWorld extends App {
  println("Hello, world!")
}

我没有收到任何错误,但没有任何内容打印到控制台。

4

3 回答 3

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

于 2012-06-22T00:33:59.260 回答
5

添加一行

object HelloWorld extends App {
  /* code */
}

HelloWorld.main(args)

在文件的末尾。

该类定义了方法,但也需要调用它。

于 2014-08-23T17:04:42.110 回答
-1

根据 http://www.scala-lang.org/api/current/scala/App.html

你想做

object Main extends App {
 Console.println("Hello World: " + (args mkString ", "))
}
于 2012-06-22T01:06:02.133 回答