52.Scala中路径依赖代码实战详解
2017-09-29 18:33
253 查看
class Outer{ //外部类 ,外部类不能访问内部类private级别的成员
private val x = 10
class Inner{
private val y = x + 10 //但是内部类可以访问外部类的私有成员。因为内部类隐含地持有外部类的实例。
}
}
object Path_Dependence_52 {
def main(args: Array[String]): Unit = {
val outer = new Outer
//inner或者inner2依赖于outer。outer是它的路径,在scala中,不同的路径代表了不同的类型。我们称之为对外部类的依赖为路径依赖类型(Path Dependence Type)
val inner = new outer.Inner
val inner2 : outer.Inner = new outer.Inner //在Java中,所有的内部类是同一个类型,但是在scala中,scala的内部类必须依赖于Outer
val o1 = new Outer
val o2 = new Outer
val i : Outer#Inner = new o1.Inner //o1.Inner是Outer#Inner的子类。外部类#内部类:类型投影(不同外部类实例,但内部类是同一类型)。
//虽有路径依赖,但还想用Java风格就用这种表达方式。
//val i : o2.Inner = new o1.Inner //报错。type mismatch,found:o1.Inner,required:o2.Inner.生动地说明了o1.Inner和o2.Inner不是同样一个类型。
//因为路径依赖中o1和o2不是同样一个对象,导致路径不一样。
}
}
例如:
有2个社交网络,facebook和twitter,有很多会员,是依赖于各自网络的。
就算是同一个人在这两个不同的社交网络里,也是不同的实例。
spark编程中,数据是分布式的,会分成很多的片,不同分片的数据从理论上讲是一样的(当然数据内容不同),也就是说,属于同样类型的数据,但是我们写代码时,处理数据时,还是处理属于每一个blog或split分片的结果。从这个角度看,也可看作是路径依赖。
参考资料来源于大数据梦工厂 深入浅出scala 第52讲 由王家林老师讲解
private val x = 10
class Inner{
private val y = x + 10 //但是内部类可以访问外部类的私有成员。因为内部类隐含地持有外部类的实例。
}
}
object Path_Dependence_52 {
def main(args: Array[String]): Unit = {
val outer = new Outer
//inner或者inner2依赖于outer。outer是它的路径,在scala中,不同的路径代表了不同的类型。我们称之为对外部类的依赖为路径依赖类型(Path Dependence Type)
val inner = new outer.Inner
val inner2 : outer.Inner = new outer.Inner //在Java中,所有的内部类是同一个类型,但是在scala中,scala的内部类必须依赖于Outer
val o1 = new Outer
val o2 = new Outer
val i : Outer#Inner = new o1.Inner //o1.Inner是Outer#Inner的子类。外部类#内部类:类型投影(不同外部类实例,但内部类是同一类型)。
//虽有路径依赖,但还想用Java风格就用这种表达方式。
//val i : o2.Inner = new o1.Inner //报错。type mismatch,found:o1.Inner,required:o2.Inner.生动地说明了o1.Inner和o2.Inner不是同样一个类型。
//因为路径依赖中o1和o2不是同样一个对象,导致路径不一样。
}
}
例如:
有2个社交网络,facebook和twitter,有很多会员,是依赖于各自网络的。
就算是同一个人在这两个不同的社交网络里,也是不同的实例。
spark编程中,数据是分布式的,会分成很多的片,不同分片的数据从理论上讲是一样的(当然数据内容不同),也就是说,属于同样类型的数据,但是我们写代码时,处理数据时,还是处理属于每一个blog或split分片的结果。从这个角度看,也可看作是路径依赖。
参考资料来源于大数据梦工厂 深入浅出scala 第52讲 由王家林老师讲解
相关文章推荐
- 第52讲:Scala中路径依赖代码实战详解学习笔记
- Scala深入浅出进阶经典 第52讲:Scala中路径依赖代码实战详解
- Scala 深入浅出实战经典 第52讲:Scala中路径依赖代码实战详解
- 第52讲:Scala中路径依赖代码实战详解
- Scala中路径依赖代码实战详解之Scala学习笔记-42
- 第64讲:Scala中隐式对象代码实战详解
- List的一阶函数操作代码实战详解之Scala学习笔记-25
- Scala深入浅出进阶经典 第63讲:Scala中隐式类代码实战详解
- Scala深入浅出实战经典:33,List的一阶函数操作代码实战详解
- Scala深入浅出进阶经典 第64讲:Scala中隐式对象代码实战详解
- Scala深入浅出进阶经典 第69讲:Scala并发编程react、loop代码实战详解
- Scala中隐式类代码实战详解之Scala学习笔记-53
- Scala中隐式对象代码实战详解之Scala学习笔记-54
- 王家林系列之scala--第69讲:Scala并发编程react、loop代码实战详解
- Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解
- scala学习之:scala的self Types与依赖注入的代码实战
- Scala 深入浅出实战经典 第95讲:Akka第一个案例动手实战MasterActor代码详解
- Scala 深入浅出实战经典 第64讲:Scala中隐式对象代码实战详解
- Dt大数据梦工厂王家林老师 Scala实战详解之第12讲 Scala中的继承:超类的构造、重写字段、重写方法代码实战
- Scala 深入浅出实战经典 第96讲:Akka第一个案例动手实战main方法实现中ActorSystem等代码详解