Scala深入浅出进阶经典 第56讲:Scala中Self Types实战详解
来源:互联网 发布:软件代理加盟协议 编辑:程序博客网 时间:2024/05/24 00:50
package com.dt.scalaInAction.demo_056/** * Scala中Self Types实战详解 */class Self { //用法一:self => 表示this的别名 这是self和this等价 注意不能使用this作为别名 self => val tmp = "Scala" def foo = self.tmp + this.tmp}trait S1class S2 { /** * 用法二: * 这种方式和self =>并不一样 将S1比如为摸个trait是 * 这种this:S1为this的别名时 有一个强制的要求 * (1)在该类型实例化时 必须混入这个类型 即: val c = new S2 with S1 否则报错 * (2)在继承该类的子类是 也必须混入 比如:class S3 extends S2 with S1 若不混入with S1则报错 */ this:S1 =>}class S3 extends S2 with S1trait T {this:S1 =>}object S4 extends T with S1object Self_Types { def main(args: Array[String]): Unit = { class Outer { outer => val v1 = "Spark" class Inner { /* * 用法三: * 这里内部类需要访问外部类成员和方法 * 通过定义了outer =>代替了外部类Outer的this 在内部类理由直接引用不需要考虑this是谁this 这是使用这种方式声明的好处 * * 如果写成println(this.v1)则报错 因为这个this代表了Inner的this * 下面的三种写法都是正确的 */ println(v1) println(outer.v1) println(Outer.this.v1) } } val c = new S2 with S1 //val c: S2 with S1 { .. } }}
以上内容是从王家林老师DT大数据课程第56讲的学习笔记和个人整理。
DT大数据微信公众账号:DT_Spark
王家林老师QQ:1740415547
王家林老师微信号:18610086859
第56讲视频网站地址:http://pan.baidu.com/s/1i3H6zDb
0 0
- Scala深入浅出进阶经典 第56讲:Scala中Self Types实战详解
- Scala深入浅出进阶经典 第58讲:Scala中Abstract Types实战详解
- Scala深入浅出进阶经典 第52讲:Scala中路径依赖代码实战详解
- Scala深入浅出进阶经典 第53讲:Scala中结构类型实战详解
- Scala深入浅出进阶经典 第54讲:Scala中复合类型实战详解
- Scala深入浅出进阶经典 第55讲:Scala中Infix Type实战详解
- Scala深入浅出进阶经典 第57讲:Scala中Dependency Injection实战详解
- 第56讲:Scala中Self Types实战详解学习笔记
- Scala深入浅出进阶经典 第63讲:Scala中隐式类代码实战详解
- Scala深入浅出进阶经典 第64讲:Scala中隐式对象代码实战详解
- Scala深入浅出进阶经典 第69讲:Scala并发编程react、loop代码实战详解
- Scala深入浅出进阶经典 第70讲:Scala界面GUI编程实战详解
- Scala深入浅出进阶经典 第71讲:Scala界面Panel、Layout实战详解
- Scala深入浅出进阶经典 第72讲:Scala界面事件处理编程实战详解
- Scala深入浅出进阶经典 第85讲:Scala中For表达式的强大表现力实战
- Spark经典视频之Scala中Self Types实战详解
- Scala深入浅出进阶经典 第78讲:Type与Class实战详解
- 56.Scala中Self Types实战详解
- Scala深入浅出进阶经典 第55讲:Scala中Infix Type实战详解
- JavaScript高级程序设计之基本概念之关键字和保留字 第3.2讲笔记
- noip2010 三国游戏 (博弈论)
- C和指针 (学习之旅)
- CodeVS1428 棋盘制作
- Scala深入浅出进阶经典 第56讲:Scala中Self Types实战详解
- Struts2 用通配符方式动态调用方法
- mybatis的一级缓存实现详解
- Android解决软键盘遮挡Button
- Android执行shell脚本命令(备忘记录与实际应用)
- 2015年华为面试经历
- JavaScript高级程序设计之基本概念之变量第3.3讲笔记
- 用简单的方法实战演练搭建http服务器(Windows上)------专为http新手
- Scala深入浅出进阶经典 第57讲:Scala中Dependency Injection实战详解