我偶然发现了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
禁用差异检查。这听起来很危险。我为什么要这样做?
答案 0 :(得分:2)
我猜答案与此问题的答案非常相似:When is @uncheckedVariance needed in Scala, and why is it used in GenericTraversableTemplate?
由于构造函数(隐式参数cbf
)存在于不可变(可能是协变)和可变(不变)集合中,因此注释可能用于使to
方法适用于两种类型的集合