5

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

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
}

根据这个答案@uV禁用方差检查。这听起来很危险。我为什么要这样做?

4

1 回答 1

2

我想答案与这个问题的答案非常相似:Scala 何时需要 @uncheckedVariance,为什么在 GenericTraversableTemplate 中使用它?

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

于 2013-03-05T08:23:49.393 回答