Warnung: Ich bin Cross-Posting von #scalaBeziehung zwischen wegabhängige inneren Typen in Scala
Das Buch Programming in Scala besagt, dass pfadabhängige Typen unterschiedlich sind abhängig von der genauen Instanz des Pfades in Frage . Wenn ja, dann verstehe ich nicht, warum alle folgenden Prädikaten true zurück:
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
Sieht aus wie ein Fehler für mich, aber es könnte ein Ergebnis der Löschung sein. Die Übereinstimmung, die gegenüber isInstanceOf/asInstanceOf bevorzugt wird, funktioniert wie erwartet. –