【发布时间】:2011-08-27 23:22:15
【问题描述】:
我是 Scala 的新手,所以我开始用 Scala 重写我的旧代码。现在,我正在重写一个 Map,其中包含一些值和修改的“历史”(如添加、删除等):
import scala.collection.immutable._
class Storage[A,+B](private var oldValues: Map[A,B]) extends Map[A,B] {
private var addedValues = new HashMap[A,B]
private var modifiedValues = new HashMap[A,B]
private var deletedValues = new HashSet[A]
}
当我覆盖方法“+”时,我无法编译它:
override def +[B1 >: B](kv: (A,B1)) = {
deletedValues = deletedValues - kv._1
addedValues = addedValues + kv //type mismatch; found : (A, B1) required: (A, B)
modifiedValues = modifiedValues + kv //type mismatch; found : (A, B1) required: (A, B)
currentValues()
}
谁能告诉我在这种情况下我该怎么办?
【问题讨论】:
标签: scala contravariance