56.Scala中Self Types实战详解
来源:互联网 发布:网络少年图片 编辑:程序博客网 时间:2024/05/16 09:49
自身类型的第一个用途:
class Self { self => //self是this的别名,每个类都有个this指针,指向自己的实例。可以用除了this的其他任何名字。 val tmp = "scala" def foo = self.tmp + this.tmp}object Self_Types_56 { def main(args: Array[String]): Unit = { //自身类型的用途 class Outer{ outer => //相当于Outer.this val v1 = "Spark" class Inner{ println(outer.v1) //在内部类使用外部类的属性/方法,在内部类做引用是很方便的 } } }}
自身类型的第二个用途:
trait S1class S2 { this : S1 => } //这时,自身类型就有了额外的限定条件:在S2实例化时,必须混入指定的类型S1。用自身类型把当前的S2抽象化了,S2必须符合S1的类型。 //也可按照结构类型,要求当前self type具有什么样的行为,对其进行限制class S3 extends S2 with S1 //若自身类型有约束的话,那么它的子类也必须满足约束条件trait T { this : S1 =>} //在trait中定义自身类型,若trait T想构建实例,必须混入S1object S4 extends T with S1object Self_Types_56 { def main(args: Array[String]): Unit = { val c = new S2 with S1 } }
参考资料来源于大数据梦工厂 深入浅出scala 第56讲 由王家林老师讲解
阅读全文
0 0
- 56.Scala中Self Types实战详解
- Spark经典视频之Scala中Self Types实战详解
- Scala深入浅出进阶经典 第56讲:Scala中Self Types实战详解
- 第56讲:Scala中Self Types实战详解学习笔记
- 58.Scala中Abstract Types实战详解
- Spark经典视频之Scala中Abstract Types实战详解
- Scala深入浅出进阶经典 第58讲:Scala中Abstract Types实战详解
- scala学习之:scala的self Types与依赖注入的代码实战
- 第58讲:Scala中Abstract Types实战详解学习笔记
- Scala深入浅出实战经典:25,Scala中Curring实战详解
- Scala中Abstract Types 成员
- 24.Scala中SAM转换实战详解
- 25.Scala中Curring实战详解
- Scala中package与import实战详解
- 53.Scala中结构类型实战详解
- 54.Scala中复合类型实战详解
- 55.Scala中Infix Type实战详解
- 57.Scala中Dependency Injection实战详解
- R中文分词、绘制云图笔记
- 定时器
- Python3 元组
- Leetcode之Intersection of Two Arrays II 问题
- Tomcat(一) Tomcat是什么:Tomcat与Java技术 Tomcat与Web应用 以及 Tomcat基本框架及相关配置
- 56.Scala中Self Types实战详解
- java序列化和反序列化
- 九月英语
- 2.java线程-thread vs runnable
- 覆盖虚表方式利用栈溢出漏洞
- Java语言基础组成(上)
- cadence 16.6 allegro PCB Editor快捷键调整格点大小
- LeetCode#74 Search a 2D Matrix(week4)
- 栈(一)利用栈计算表达式