Для удобства, ясности и абстракции я хочу составить другое имя для конкретной привязки параметризованного признака коллекции.Например, сначала рассмотрим:
import collection.mutable.Map // NB: Map is a trait
val m1 = Map[String, Int]() // uses the Map companion object to create a HashMap
Теперь я хочу заменить MyMap
на Map[String, Int]
.В идеале я просто хотел бы сделать что-то вроде:
trait MyMap extends Map[String, Int]
object MyMap extends Map[String, Int] // not good enough by itself, need some apply defs
val m2 = MyMap() // nope
Я мог бы добавить больше вещей к объекту-компаньону MyMap
, или я мог бы заставить MyMap расширять HashMap[String, Int]
и забыть о том, чтобы полагаться на магический дефолт внутрисопутствующий объект Map.
Но эти альтернативы кажутся слишком большой работой для чего-то, что должно быть простым: я просто хочу, чтобы MyMap
действовал как Map[String, Int]
, где бы он ни появлялся.Какой самый простой способ сделать это, или я упускаю какой-то более глубокий принцип?