我有两张地图如下。
import scalaz._, Scalaz._
val map1: Map[String, Seq[String]] = Some value
val map2: Map[String, Seq[String]] = Somve Value
这编译得很好,一切都按预期工作。
// Compiles
map1.mapValues{_.toList} |+| map2.mapValues{_.toList}
但是这个不能编译(不能解析符号|+|
),我想知道为什么?
// Doesn't compile
map1 |+| map2
更新:我发现这篇很棒的文章回答了为什么会发生编译错误,这基本上,正如评论部分中提到的那样,Seq
它不是一个幺半群:为什么 List a Semigroup 但 Seq 不是?
现在我的问题是:这是否意味着我必须将我的Seq
(IndexedSeq
有同样的问题)转换List
回来Seq
(Seq
实际上是 s ,出于性能原因IndexedSeq
,我应该保留它们)。IndexedSeq
除了编写我自己的地图合并代码之外,还有什么解决方法吗?