2017-06-06 63 views
2

升级到斯卡拉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]] 
+0

你打算有一个'Set'和另一个'Map'值吗? –

+0

在更新到2.12之前,该代码实现了什么? –

+0

是的,第一个是Set,第二个是Map –

回答

2

它看起来像一个错误。如果模拟不存在,您可以将其发布到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()) 
相关问题