和有什么区别
object Application extends App {
println("Hello World")
}
和
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
和有什么区别
object Application extends App {
println("Hello World")
}
和
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
App trait 是一种创建可执行 scala 程序的便捷方式。与 main 方法的不同之处在于(除了明显的语法差异之外)App trait 使用了延迟初始化功能。
来自 2.9 的发行说明(请参阅http://www.scala-lang.org/old/node/9483)
继承 App trait 的对象使用 Scala 2.9 的延迟初始化特性来执行整个主体作为继承的 main 方法的一部分。
App 方案的另一个新特性是命令行参数现在可以通过 args 值访问(继承自 trait App)
这两种情况在 scala 脚本上是不一样的。
object extends App
不是由“ scala MyObject.scala
”命令执行的,而是包含main方法的对象是由“ scala MyObject.scala
”命令执行的。这被描述为 scala 寻找具有主要脚本方法的对象。
当使用 Eclipse 的 REPL 或 scala 工作集时,需要MyObject.main(Array[String]())
为这两种情况显式调用。
这个简单的提示对像我这样的初学者很有帮助。
App trait 是使用 [[DelayedInit]] 功能实现的,这意味着在执行 main 方法之前对象的字段不会被初始化。