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

Ram*_*esh 84 scala

有什么区别

object Application extends App {
   println("Hello World")
}
Run Code Online (Sandbox Code Playgroud)

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

Emi*_*l H 62

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

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

继承App trait的对象使用Scala 2.9的延迟初始化功能来执行整个body作为继承的main方法的一部分.

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


小智 5

这两种情况在 scala 脚本上并不相同。

object extends App没有被“ ”命令执行,但是包含mainscala MyObject.scala方法的对象被“ ”命令执行。这被描述为 scala 寻找带有 main 脚本方法的对象。scala MyObject.scala

MyObject.main(Array[String]())当使用 Eclipse 的 REPL 或 scala Workset 时,两种情况都需要显式调用。

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