警告:我从#scala 交叉发布
《Scala 中的编程》一书指出,依赖于路径的类型根据所讨论路径的确切实例而有所不同。如果是这样,我不明白为什么以下所有谓词都返回 true:
class Outer {
val in = new Inner
class Inner
}
val o1 = new Outer
val o2 = new Outer
o1.in.isInstanceOf[Outer#Inner] //makes perfect sense
o1.in.isInstanceOf[o1.Inner] //still makes sense, the path-dependent type is o1's own
o1.in.isInstanceOf[o2.Inner] //why is this true? PiS p.423 says the path-dependent types are different, they only share a common supertype Outer#Inner