我想映射一个类型为List[~(A,Option[B])]
的地图,但在我映射之前我将它分组为A.现在我可以映射它,我必须匹配地图的元组:< / p>
val rawData: List[A ~ Option[B]]
rawData
.groupBy(_._1)
.map(case (first: A, second: Seq[A ~ Option[B]]) =>
C(first, second.map(_._2))
)
现在编译器警告我:
non-variable type argument anorm.~[A,Option[B]] in type pattern Seq[anorm.~[A,Option[B]]] is unchecked since it is eliminated by erasure
我发现了几种解决方案可以使匹配成为可能,但我有一种感觉,也可以完全避免匹配,因为我只想通过已定义类型的Map。怎么可能这样呢?
答案 0 :(得分:2)
在这种情况下,您实际上不必担心这一点。该错误是因为您的case语句过于冗长。更改为以下内容:
rawData.groupBy(_._1).map(case (first, second) =>
C(first, second.map(_._2))
)
case语句中的类型限制元组的类型(这是不必要的)。但是,它们以在运行时无法验证的方式限制它(由于类型擦除),这就是你得到错误的原因。