In Scala 2.10.4 dies kompiliert:Scala 2.11 Typ Variance Änderungen
trait Foo[-U,T]{
type Contra = U
}
aber 2.11.0 in der gleichen nicht mit:
kontra Typ U tritt in unveränderliche Position in Typ U Geben Sie ein Contra Merkmal Foo [-U, T] {Typ Contra = U}
Gibt es einen Workaround? Der Versuch, eine Scala-Bibliothek auf 2.11 und den kontravarianten Typ zu portieren, ist erforderlich, um eine Bootsladung von impliziten Defs zu erhalten, die vom Compiler aufgenommen werden (d. H. U-Invarianten scheinen keine Option zu sein).
Danke
Könnten Sie erklären, mehr darüber, wie Sie den Typ Element zu verwenden und Kontra implizite Auflösung zu kontrollieren? Ich wäre daran interessiert, mehr darüber zu erfahren, und vielleicht gibt es einen Workaround, der tiefer in dem Problem liegt. – wingedsubmariner
Können Sie 'Typ Contra>: U' verwenden? –
@ n.m. Ich kann Contra>: U nicht als die Instanzen verwenden, die von U abhängen, und nicht von einem Supertyp von U (dh, bei diesem Ansatz kompiliert der Compiler, dass Methode X kein Mitglied von Contra ist) – virtualeyes