0
Дано:Установить границы для членов типа в пределах типа псевдонима в Scala
trait Record {
type ID
val id: ID
}
trait DataSource {
type ID
def read(id: ID): Try[R]
}
Я хотел бы быть в состоянии описать функцию read
обобщенно.
type Reader[R <: Record, DS <: DataSource] = (DS#ID) => Try[R]
Как я могу гарантировать безопасность типа здесь такие, что DS#ID
не будет неодинаковый типа как R#ID
? Я пытался ...
type Reader[R <: Record, DS <: DataSource, R#ID <: DS#ID] = (DS#ID) => Try[R]
Но doens't компиляции. Каков правильный синтаксис этой ситуации?