Created by Wang, Jerry on Sep 25, 2015

application里一个object extend了一个App:

通过查看source code的实现能发现App是一个trait,继承了DelayedInit:

scala.DelayedInit

Classes and objects (but note, not traits) inheriting the DelayedInit marker trait will have their initialization code rewritten as follows: code becomes delayedInit(code).

Initialization code comprises all statements and all value definitions that are executed during initialization.

Example:

trait Helper extends DelayedInit { def delayedInit(body: => Unit) = { println(“dummy text, printed before initialization of C”) body // evaluates the initialization code of C } } class C extends Helper { println(“this is the initialization code of C”) } object Test extends App { val c = new C }

Should result in the following being printed:

dummy text, printed before initialization of C this is the initialization code of C


所有带有App 特质的类,其初始化方法都会被挪到delayedInit方法中。App特质的main方法捕获到命令行参数,调用delayedInit方法。



要获取更多Jerry的原创文章,请关注公众号"汪子熙":

App in Scala相关推荐

  1. Scala项目启动方式:extends App和main的区别

    启动一个Scala项目,有两种方法: 利用App特质: object Application extends App {println("Hello World") } 使用mai ...

  2. Scala入门到精通——第七节:类和对象(二)

    本节主要内容 单例对象 伴生对象与伴生类 apply方法 应用程序对象 抽象类 单例对象 在某些应用场景下,我们可能不需要创建对象,而是想直接调用方法,但是Scala语言并不支持静态成员,scala通 ...

  3. Scala与Java差异(六)之类定义

    一.类定义 (1)定义类,包含field以及方法 class ScalaClass {private var field = "one"def aMethod() { print( ...

  4. Scala Cookbook读书笔记 Chapter 3.Control Structures 第一部分

    3.0 总体介绍 Scala中的if/then/else结构和Java中很像,但是它还可以用来返回一个值.比如Java中用的三目运算,在Scala中只需要使用正常的if语句即可. val x = if ...

  5. sbt编程语言scala的构建工具配置及项目构建(附带网盘下载)

    SBT简介 SBT 是 Scala 的构建工具,全称是 Simple Build Tool, 类似 Maven 或 Gradle. Java可以用Maven快速构建项目,scala用SBT快速构建一个 ...

  6. 【用户画像】标签任务开发流程(源码之实体类、工具类、配置文件、DAO层)

    文章目录 一 代码实现 0 开发主线 1 实体类 (1)TagInfo (2)TaskInfo (3)TaskTagRule 2 工具类 (1)连接sql的工具类 测试 (2)专门读取properti ...

  7. Spark官方文档整理:spark-core

    Spark 官方文档 1,spark 概述 Apache Spark 是一个快速通用的集群计算系统,它提供了提供了java,scala,python和R的高级API,以及一个支持一般图计算的优化引擎. ...

  8. Apache Iceberg 数据湖从入门到放弃(2) —— 初步入门

    在介绍如何使用Iceberg之前,先简单地介绍一下Iceberg catalog的概念.catalog是Iceberg对表进行管理(create.drop.rename等)的一个组件.目前Iceber ...

  9. 1 P1001 A+B Problem AC100分

    题目背景 强烈推荐新用户必读帖. 不熟悉算法竞赛的选手请看这里: 算法竞赛中要求的输出格式中,不能有多余的内容,这也包括了"请输入整数 \bm aa 和 \bm bb" 这一类的提 ...

最新文章

  1. python dataframe 计算上下两行的差值_用Python进行数据清洗!
  2. Android Studio安装Genymotion插件
  3. 用十条命令在一分钟内检查Linux服务器性能
  4. 全国高校计算机考试用的什么版本,全国高校计算机等级考试与全国计算机等级考试,有区别吗...
  5. 【解决】打印机只打印第一页纸的问题
  6. 关于反射程序集的心得
  7. python语法学习第一天--变量、运算符、数据类型
  8. 支持linux的翻译软件,CentOS 6.4下安装翻译软件StarDict
  9. 河北工业大学 高等数学学习资料分享(课件,录屏,教材,答案)
  10. linux下的遥控器软件下载,万能遥控器软件
  11. 雷达基础系列文章之四:雷达专业国内期刊
  12. PicGo的安装与使用
  13. 网页数据提取----网络投票软件开发(续1)
  14. mysql每组排序后取前2条,并修改数据
  15. [软件测试]软件测试的原则及软件质量
  16. Camera--(7)手机双摄像头原理及产业解析
  17. VS C#-EXE文件如何将ICO图片添加进去
  18. php短网址生成原理,php 生成短网址原理及代码
  19. Linux定时清理日志
  20. 一个复杂的json例子

热门文章

  1. 将网页保存为webarchive文件的代码
  2. ASP.NET和C#中对XML的操作,以及简单的xml与xsl !
  3. Mac 上 Sublime Text3-Package control-console安装失败解决方案
  4. SDWebImage实现分析
  5. 随记一个C的毫秒级群PING
  6. Json.net/Newtonsoft 3.0 新特性JObject/Linq to Json
  7. 优化案例(part3)--Aberrance suppresse dspatio-temporal correlation filters for visual object tracking
  8. 文献记录(part78)--Structure-Constrained Low-Rank Representation
  9. JavaScript入门(part9)--函数
  10. Django从理论到实战(part47)--ListView类