我想映射一个类型为List[~(A,Option[B])]
的map但在映射之前我先将它按a分组现在我可以映射它,我必须匹配map的Tuple:
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。这怎么可能呢?
在这种情况下,您实际上不必担心这个。这个错误是因为您的case语句太冗长了。改成如下:
rawData.groupBy(_._1).map(case (first, second) =>
C(first, second.map(_._2))
)
case语句中的类型限制了元组的类型(这是不必要的)。但是,它们以一种无法在运行时验证的方式对其进行限制(由于类型擦除),这就是您得到错误的原因。