Я пытаюсь написать собственный класс, расширяющий Map[DateTime, T]
.Расширенный класс должен принимать Map[DateTime, T]
в качестве аргумента конструктора и вызывать соответствующие методы предоставленной карты для каждого метода, который Map
должен реализовать.
У меня не было проблем с написанием
def -(key: DateTime) = iv.-(key)
def get(key: DateTime) = iv.get(key)
но я застрял на
+[B1 :>B](kv: (A, B1)):Map[A, B1]
Как мне написать это?
Разве не существует простой ссылочной Map
реализации оболочки, с которой можно начать?
PS: не предлагайте объявлять его как type DtMap[T] = Map[DateTime, T]
- мне нужно будет добавить свои собственные методы в класс.
ОБНОВЛЕНИЕ: Итак, результат выглядит так, чтобыобъедините его, чтобы кто-нибудь смог использовать его в качестве отправной точки для своего расширения Map
(может, у решения есть некоторые скрытые проблемы - пожалуйста, дайте мне знать):
case class DtValMap[T](iv: Map[DateTime, T]) extends Map[DateTime, T] {
def -(key: DateTime) = new DtValMap(iv.-(key))
def get(key: DateTime) = iv.get(key)
def +[T1 >: T](kv: (DateTime, T1)): DtValMap[T1] = new DtValMap(iv + kv)
def iterator: Iterator[(DateTime, T)] = iv.iterator
}
ОБНОВЛЕНИЕ2:обратил внимание на опечатку, которая стала причиной проблемы: у меня было :>
(неправильно) вместо >:
.Но я намеренно не исправляю это в вышеприведенном тексте, так как в этом вопросе нет смысла.