0

我想映射一个具有该类型的 Map,List[~(A,Option[B])]但在映射它之前,我将它按 A 分组。现在我可以映射它,我必须匹配 Map 的元组:

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。这怎么可能?

4

1 回答 1

2

在这种情况下,您实际上不必担心这一点。该错误是因为您的 case 语句过于冗长。更改为以下内容:

rawData.groupBy(_._1).map(case (first, second) => 
  C(first, second.map(_._2))
)

case 语句中的类型限制了元组的类型(这是不必要的)。但是,它们以在运行时无法验证的方式限制它(由于类型擦除),这就是您收到错误的原因。

于 2013-06-06T20:51:49.693 回答