Каким-то образом я не могу правильно реализовать SortedMap. Вот минимальный (не) рабочий пример:Реализация пользовательской SortedMap в Scala
class MyMap[A](t: Map[Long, A]) extends SortedMap[Long, A] {
protected val internalMap = TreeMap(t.toArray: _*)
def -(key: Long) = MyMap(internalMap - key)
def get(key: Long) = internalMap.get(key)
def rangeImpl(from: Option[Long], until: Option[Long]) = TreeMap(internalMap.rangeImpl(from, until))
def iterator = internalMap.iterator
def ordering = internalMap.ordering
}
Но, все, что я прохожу в MyMap
конструктор, вызывая, например, его size
, всегда возвращает 0.
Дополнение: Я просто скопировал код в новый проект, и он работал 8- \ В любом случае, позвольте мне изменить вопрос, чтобы сделать его полезным: это правильный способ расширения SortedMap
?
Чтобы ответить на ваше добавление вопросом: поскольку 'TreeMap' реализует' SortedMap', зачем его нужно обернуть в 'MyMap'? Почему бы просто не использовать «TreeMap» напрямую? (Просто для подтверждения: мы говорим о 'scala.collection.immutable.TreeMap', правильно?) –
@ Крис: Это был минимальный рабочий пример :-) В реальной жизни я хочу повторно реализовать свои собственные функции для другого вида SortedMap. –
И да, речь идет о 'scala.collection.immutable.SortedMap'. –