【问题标题】:type arguments do not conform to trait Subtractable's type parameter bounds类型参数不符合 trait Subtractable 的类型参数界限
【发布时间】:2017-06-07 02:28:42
【问题描述】:

升级到 Scala 2.12 后,我遇到了一个奇怪的代码编译问题:

val c = Map("a" -> Set[Map[String, String]](), "b" -> Map[String, String]())

它正在抛出这个异常:

Error:(19, 7) type arguments [?,Iterable[Equals] with String with scala.collection.immutable.Map[String,String] => Any with scala.collection.generic.Subtractable[_ >: String with scala.collection.immutable.Map[String,String] <: Object, Iterable[Equals] with String with scala.collection.immutable.Map[String,String] => Any with scala.collection.generic.Subtractable[_ >: String with scala.collection.immutable.Map[String,String] <: Object, Iterable[Equals] with String with scala.collection.immutable.Map[String,String] => Any with scala.collection.generic.Subtractable[_ >: String with scala.collection.immutable.Map[String,String] <: Object, Equals]]{def seq: Iterable[Equals] with String with scala.collection.immutable.Map[String,String] => Any with scala.collection.generic.Subtractable[_ >: String with scala.collection.immutable.Map[String,String] <: Object, Equals]}]{def seq: Iterable[Equals] with String with scala.collection.immutable.Map[String,String] => Any with scala.collection.generic.Subtractable[_ >: String with scala.collection.immutable.Map[String,String] <: Object, Iterable[Equals] with String with scala.collection.immutable.Map[String,String] => Any with scala.collection.generic.Subtractable[_ >: String with scala.collection.immutable.Map[String,String] <: Object, Equals]]{def seq: Iterable[Equals] with String with scala.collection.immutable.Map[String,String] => Any with scala.collection.generic.Subtractable[_ >: String with scala.collection.immutable.Map[String,String] <: Object, Equals]}}] do not conform to trait Subtractable's type parameter bounds [A,+Repr <: scala.collection.generic.Subtractable[A,Repr]]

【问题讨论】:

  • 您是否打算拥有Set 和另一个Map 的值之一?
  • 那段代码在更新到 2.12 之前实现了什么?
  • 是的,第一个是Set,第二个是Map

标签: scala


【解决方案1】:

它看起来像一个错误。如果没有模拟,您可以将其发布到bug tracker

作为解决方法,尝试将值附加到地图。

scala> val c = Map.empty[String,Iterable[Any]] + ("a" -> Set[Map[String, String]]()) + ("b" -> Map[S
tring, String]())
c: scala.collection.immutable.Map[String,Iterable[Any]] = Map(a -> Set(), b -> Map())

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 1970-01-01
    • 2019-12-18
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多