Как Seq [+ A] может быть ковариантным в A? - PullRequest
6 голосов
/ 15 марта 2011

Как Seq [+ A] может быть ковариантным в A, если A находится в контравариантном положении:

def :+ (elem: A) : Seq[A] ?

Как я понимаю, тип аргумента метода является контравариантной позицией. Что мне не хватает?

1 Ответ

10 голосов
/ 15 марта 2011

Это сценарий использования подпись.Это не настоящая подпись, просто то, что вы обычно видите в случае общего использования.

Настоящая подпись:

def :+ [B >: A, That] ( elem : B )(implicit bf : CanBuildFrom[Seq[A], B, That] ) : That

Что, как вы видите, даже негарантия возврата Seq, намного меньше A.

...