加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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]

为什么这个定义没有问题,解决这个问题的最佳方法是什么?
我检查了这个covariant type T occurs in contravariant position,但对我没有任何帮助.

解决方法

这有效:

abstract class Sequence[+A]{
  def append[B >: A](x: Sequence[B]): Sequence[B]
}

定义协变类型时,不能将其用作输入参数(对于返回类型使用的逆变类型,您会遇到同样的问题).解决方法是定义一个超类型A的新类型(此处为B).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读