gpt4 book ai didi

scala - 如何在 Scala 中扩展 map ?

转载 作者:行者123 更新时间:2023-12-04 15:54:20 25 4
gpt4 key购买 nike

我想做的是编写一个扩展 Map[DateTime, T] 的自定义类.扩展类是拿一个Map[DateTime, T]作为构造函数参数并为每个方法调用提供的映射的相应方法 a 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:我注意到现在导致问题的拼写错误:我有 :> (错误)而不是 >: .但我故意不在上面的文本中更正它,因为这会使问题变得毫无意义。

最佳答案

如果我没理解错的话,是

class YourMap[T](iv: Map[DateTime, T]) extends Map[DateTime, T] 

你就不能这样吗

def +[T1 >: T](kv: (DateTime, T1)): YourMap[T1] = new YourMap(iv + kv)

我不太确定你的 def -,如果我理解正确的话,它返回一个 Map,而不是 YourMap。如果没问题,为什么不能对 + 做同样的事情?

type DtMap[T] 行中,您是否考虑过使用 pimp my library 添加方法,而不是使用类扩展?集合类很复杂,扩展它们也很复杂。

关于scala - 如何在 Scala 中扩展 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9411232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com