0
Мой вопрос прост.Scala: Тип соответствия псевдонима типа с верхней границей
Почему этот код делает ошибку,
abstract class A {
type T <: A.Inner
def toT: T = new A.Inner(this)
}
object A {
class Inner(a: A)
}
// Exiting paste mode, now interpreting.
<console>:16: error: type mismatch;
found : A.Inner
required: A.this.T
def toT: T = new A.Inner(this)
^
тогда этот код не?
abstract class A {
type T = A.Inner
def toT: T = new A.Inner(this)
}
object A {
class Inner(a: A)
}
// Exiting paste mode, now interpreting.
defined class A
defined object A
A.Inner <: A.Inner
. Не так ли?
ОК. Кажется, я не привык к контравариантности ... – Naetmul