Scala 找不到为SortedMap定义的映射的隐式类型类

Scala 找不到为SortedMap定义的映射的隐式类型类,scala,typeclass,implicit,Scala,Typeclass,Implicit,在以下代码中(从我尝试扩展对SortedMap的支持中提取),pimpedupd可用于Map,但不适用于SortedMap 为什么-以及如何更改代码,以便updatemap处理SortedMap(以及其他可能的Map子类) 对象TImpl扩展应用程序{ 性状更新训练[A,K,T]{ def upd(k:k,t:t):A } 特征更新函子[A,K,T]{ DEFUPD(a:a,k:k,t:t):a } 隐式类updatemap[M[KT,TT]“1”) val mt=m.upd(“A”、“2”)

在以下代码中(从我尝试扩展对
SortedMap
的支持中提取),pimped
upd
可用于
Map
,但不适用于
SortedMap

为什么-以及如何更改代码,以便
updatemap
处理
SortedMap
(以及其他可能的
Map
子类)

对象TImpl扩展应用程序{
性状更新训练[A,K,T]{
def upd(k:k,t:t):A
}
特征更新函子[A,K,T]{
DEFUPD(a:a,k:k,t:t):a
}
隐式类updatemap[M[KT,TT]“1”)
val mt=m.upd(“A”、“2”)
val smt:collection.SortedMap[String,String]=sm.upd(“A”,“2”)
println(mt)
println(smt)
}

仅仅是因为
SortedMap
扩展了
scala.collection.Map


当你为
M[KT,TT]设定了一个界限时,如果你发现了一种方法,可以将
作为
的替代,我已经问了一个相关的问题,请随意回答。
object TImpl extends App {

  trait UpdatedTrait[A, K, T] {
    def upd(k: K, t: T): A
  }

  trait UpdatedFunctor[A, K, T] {
    def upd(a: A, k: K, t: T): A
  }

  implicit class UpdatedMap[M[KT, TT] <: Map[KT, TT], K, T](a: M[K, T])(implicit f: UpdatedFunctor[M[K, T], K, T]) {
    def upd(k: K, t: T) = {
      f.upd(a, k, t)
    }
  }

  implicit def mapUpdatedFunctor[M[KT, TT] <: Map[KT, TT], K, T] = new UpdatedFunctor[M[K, T], K, T] {
    override def upd(a: M[K, T], k: K, t: T): M[K, T] = {
      a.updated(k, t).asInstanceOf[M[K, T]]
    }
  }

  val m = Map("A" -> "1")
  val sm = collection.SortedMap("A" -> "1")

  val mt = m.upd("A", "2")
  val smt: collection.SortedMap[String, String] = sm.upd("A", "2")

  println(mt)
  println(smt)
}