为什么以下代码会出错。我认为Function1
的类型为[-A,+A]
scala> class CSuper
defined class CSuper
scala> class CBase extends CSuper
defined class CBase
scala> class CSub extends CBase
defined class CSub
scala> val f:Function1[CBase,CBase] = (c:CBase) => new CBase
f: CBase => CBase = $$Lambda$1284/2064513681@642f8b7f
scala> val f1:Function1[-CBase,+CBase] = (c:CBase) => new CBase
<console>:1: error: identifier expected but ',' found.
val f1:Function1[-CBase,+CBase] = (c:CBase) => new CBase
^
scala>
答案 0 :(得分:1)
在使用泛型时,只有在定义时,才能指定协方差/逆变。 Function1
泛型已定义为
trait Function1[-T1, +R]
,您无需指定此内容。