如果A出现在逆变位置,Seq [+ A]如何在A中是协变的:
def :+ (elem: A) : Seq[A] ?Run Code Online (Sandbox Code Playgroud)
据我所知,方法参数类型是逆变位置.我错过了什么?
Dan*_*ral 10
这是用例签名.它不是真正的签名,只是您在常见用例中通常会看到的内容.
真正的签名是:
def :+ [B >: A, That] ( elem : B )(implicit bf : CanBuildFrom[Seq[A], B, That] ) : That
Run Code Online (Sandbox Code Playgroud)
如你所见,这甚至不能保证Seq回报,更不用说了A.