Вариативность и переопределение функций Scala

У меня небольшая проблема с пониманием вариативности методов при перегрузке.

Хотя это отлично работает из-за ковариации в возвращаемом типе

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

5
задан raichoo 28 November 2010 в 13:42
поделиться