为什么要通过@uV禁用差异检查?

时间:2013-03-05 07:54:32

标签: scala annotations type-safety

我偶然发现了TraversableLike(2.10.0)定义的方法to的以下定义:

override def to[Col[_]](implicit cbf: CanBuildFrom[Nothing, A, Col[A @uV]]): Col[A @uV] = {
  val b = cbf()
  b.sizeHint(this)
  b ++= thisCollection
  b.result
}

根据this answer@uV禁用差异检查。这听起来很危险。我为什么要这样做?

1 个答案:

答案 0 :(得分:2)

我猜答案与此问题的答案非常相似:When is @uncheckedVariance needed in Scala, and why is it used in GenericTraversableTemplate?

由于构造函数(隐式参数cbf)存在于不可变(可能是协变)和可变(不变)集合中,因此注释可能用于使to方法适用于两种类型的集合