一 、问题描述
执行一个Scala Obejct 程序,Java 沿袭过来的当然直接用main,Scala 官方还提供了另外的一种方法
- 定义的object extend App trait
 - 在object中定义好main()
 
二、Scala CookBook
这是一段对《 Scala Cookbook》的摘抄,6.4 如何运行一个Scala Object 应用
2.1 extends App
object Launch extends App {
  print("extends App to run this object")
}
 
继承了这个App,这个object会自动的run ,就像它嵌入在mian方法中一样
$ scalac Launch.scala
$ scala Launch
extends App to run this objec
 
scalac 编译 .scala 文件,scala run Launch.class
 
 当用这个方法的时候,任何 命令行 参数 都 作为 args对象 隐式可用,这都是App继承下来的。
 args对象:一个Array[String] ,就像你自己声明的一样
object Launch extends App {
  if(args.length == 1)
    print(s"arguments' length is 1,and the value is${args(0)}")
  else
    print("arguments' length is != 1")
}
 

2.2 main()
略 和java一样
三 、区别
App是一种更方便的方式去创建可执行的scala,和main()的区别是 延迟初始化(当真正使用的时候才会启动)
scala App trait
注意用两种launch 方式都是用的 object 而不是 class
 我更倾向于用App去处理 大型程序 或者 脚本
see also
https://stackoverflow.com/questions/11667630/difference-between-using-app-trait-and-main-method-in-scala













![[附源码]Python计算机毕业设计SSM基于的冠状病毒疫情防控资讯交流推荐网站(程序+LW)](https://img-blog.csdnimg.cn/c8f24948235b44859154bbbf041279dd.png)





