之间有什么区别
object Application extends App {
println("Hello World")
}
和
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
答案 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方法之前,不会初始化对象的字段。