第52讲:Scala中路径依赖代码实战详解学习笔记
本期内容:
1.scala的内部类实现代码实战
2.scala路径依赖代码实战用
路径依赖不易理解,要从内部类谈起.例:
class Outer { //外部类
private val x = 10
calss Inner { //Inner是内部类
private val y = x + 10
}
}
/*内部类可以访问外部类的私有成员,
原因是内部类隐含地持有外部类的实例。
因为拥有外部类的实例所以可以访问。
外部类不能访问内部类的私有成员。
*/
object Path_Dependence {
def main(args: Array[String]){
val outer = new Outer
val inner = new outer.Inner //构建内部类的实例。
//java中是outer.(new Inner) 这与scala差别很大
//java中的所有内部类是同一个类型,scala中的内部类必须依赖于外部类的实例。
外部类的不同的实例是不同的。称内部类对外部类的依赖为路径依赖类型。
outer就是路径。scala中不同的路径代表不同的类型。
val inner2: outer.Inner = new outer.Inner
val o1 = new Outer
val o2 = new Outer
}
}
//val i: o2.Inner = new O1.Inner这样会报错,因为o1和o2是不同的对象所以路径不同,类型就不同。
例如图书馆中有很多书,书是依赖于图书馆的具体实例。
twiter和facebook中的两个同名会员,因为是不同网站所以是不同类型。
scala中外部类中有内部类时加#,例如:
//val i: o2.#Inner = new O1.Inner报错
//val i: Outer#Inner = new o1.Inner 这样就OK了。
说明o1.Inner是Outer的子类。
意义:scala提供了路径依赖,编程时可能需要用java风格的外部类和内部类是同一个类型。
spark编程中分布式数据分成多片。属于同类型的数据。
本讲在spark编程中直接使用的不多。
以上内容是从王家林老师DT大数据课程第52讲的学习笔记。
DT大数据微信公众账号:DT_Spark
王家林老师QQ:1740415547
王家林老师微信号:18610086859
百度网盘共享的DT大数据梦工厂王家林老师第1-91讲的视频内容:
http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group
第52讲酷6视频网址:http://v.ku6.com/show/wRTgiSXw-WOD3bhUnGJy8w...html
51CTO视频网址:http://edu.51cto.com/lesson/id-68118.html