У меня небольшая проблема с пониманием вариативности методов при перегрузке.
Хотя это отлично работает из-за ковариации в возвращаемом типе
class Bla
class Fasel extends Bla
trait Test[A] {
def tester(): Bla = new Bla
}
class FooTest[A](a: A) extends Test[A] {
override def tester(): Fasel = new Fasel
}
этот не работает, даже если функции контравариантны в своих m есть небольшая проблема с пониманием вариативности методов при перегрузке. Хотя это отлично работает из-за ковариации в возвращаемом классе типа Bla class Fasel расширяет Bla trait Test [A] {...
У меня небольшая проблема с пониманием вариативности методов при перегрузке.
Хотя это отлично работает из-за ковариации в возвращаемом типе
class Bla
class Fasel extends Bla
trait Test[A] {
def tester(): Bla = new Bla
}
class FooTest[A](a: A) extends Test[A] {
override def tester(): Fasel = new Fasel
}
этот не работает, даже если функции контравариантны в своих m есть небольшая проблема с пониманием вариативности методов при перегрузке. Хотя это отлично работает из-за ковариации в возвращаемом классе типа Bla class Fasel расширяет Bla trait Test [A] {...
У меня небольшая проблема с пониманием вариативности методов при перегрузке.
Хотя это отлично работает из-за ковариации в возвращаемом типе
class Bla
class Fasel extends Bla
trait Test[A] {
def tester(): Bla = new Bla
}
class FooTest[A](a: A) extends Test[A] {
override def tester(): Fasel = new Fasel
}
этот не работает, даже если функции контравариантны в своих типы параметров.
class Bla
class Fasel extends Bla
trait Test[A] {
def tester(a: Fasel): Bla = new Bla
}
class FooTest[A](a: A) extends Test[A] {
override def tester(a: Bla): Fasel = new Fasel
}
Что я здесь не так? Есть указатели?
С уважением, raichoo