在scala中使用App trait和main方法之间的区别

时间:2012-07-26 10:46:26

标签: scala

之间有什么区别
object Application extends App {
   println("Hello World")
}

object Application {
    def main(args: Array[String]): Unit = {
        println("Hello World");
    }
}

3 个答案:

答案 0 :(得分:59)

App trait是一种创建可执行scala程序的便捷方式。主要方法的差异是(除了明显的句法差异)App特征使用延迟的初始化特征。

从2.9的发行说明(见http://www.scala-lang.org/old/node/9483

  

继承App特征的对象使用Scala 2.9的延迟初始化功能来执行整个主体作为继承主方法的一部分。

     

App方案的另一个新功能是命令行参数现在可以通过args值访问(它继承自trait App)

答案 1 :(得分:3)

这两个案例在scala脚本上并不相同。

object extends App”命令未执行

scala MyObject.scala, 但是包含 main 方法的对象是由“scala MyObject.scala”命令执行的。 这被描述为使用main方法编写脚本的scala查找对象。

使用Eclipse的REPL或scala工作集时, 需要明确地为这两种情况调用MyObject.main(Array[String]())

这个简单的提示对像我这样的初学者很有帮助。

答案 2 :(得分:0)

应用程序特征是使用[[DelayedInit]]功能实现的,这意味着在执行main方法之前,不会初始化对象的字段。