Scala协变类型错误
发布时间:2020-12-16 18:22:27 所属栏目:安全 来源:网络整理
导读:我试图定义一个类 abstract class Sequence[+A] { def append (x: Sequence[A]): Sequence[A]} 并进入了终端 console:8: error: covariant type A occurs in contravariant position in type Sequence[A] of value x def append (x: Sequence[A]): Sequence[
我试图定义一个类
abstract class Sequence[+A] { def append (x: Sequence[A]): Sequence[A] } 并进入了终端 <console>:8: error: covariant type A occurs in contravariant position in type Sequence[A] of value x def append (x: Sequence[A]): Sequence[A] 为什么这个定义没有问题,解决这个问题的最佳方法是什么? 解决方法
这有效:
abstract class Sequence[+A]{ def append[B >: A](x: Sequence[B]): Sequence[B] } 定义协变类型时,不能将其用作输入参数(对于返回类型使用的逆变类型,您会遇到同样的问题).解决方法是定义一个超类型A的新类型(此处为B). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |