Gegeben:Grenzen für Typ-Mitglieder innerhalb eines Typs Alias in Scala
trait Record {
type ID
val id: ID
}
trait DataSource {
type ID
def read(id: ID): Try[R]
}
Ich möchte in der Lage sein, die allgemein die read
Funktion zu beschreiben.
type Reader[R <: Record, DS <: DataSource] = (DS#ID) => Try[R]
Wie kann ich garantieren, Typsicherheit hier, so dass DS#ID
wird kein unähnlich Typ wie R#ID
sein? Ich habe versucht ...
type Reader[R <: Record, DS <: DataSource, R#ID <: DS#ID] = (DS#ID) => Try[R]
Aber das kompilieren doens't. Was ist die korrekte Syntax für diese Situation?