【发布时间】:2012-03-13 18:01:31
【问题描述】:
我想做的是编写一个扩展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
}
UPDATE2:我注意到现在导致问题的错字:我有:>(错误)而不是>:。但我故意不在上面的文字中更正它,因为这会使问题变得毫无意义。
【问题讨论】:
标签: scala map scala-collections