Scala println无法使用App trait

时间:2012-06-22 00:21:45

标签: scala scripting println

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

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

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

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

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

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

添加一行

object HelloWorld extends App {
  /* code */
}

HelloWorld.main(args)

在您的文件末尾。

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

答案 2 :(得分:-1)

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

你想做什么

object Main extends App {
 Console.println("Hello World: " + (args mkString ", "))
}