Function1不使用Covariant和Contravariant参数

时间:2017-10-05 14:22:18

标签: scala

为什么以下代码会出错。我认为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>

1 个答案:

答案 0 :(得分:1)

在使用泛型时,只有在定义时,才能指定协方差/逆变。 Function1泛型已定义为 trait Function1[-T1, +R],您无需指定此内容。