0

タイプを持つ Map をマップしたいのですが、マップするList[~(A,Option[B])]前に A でグループ化します。マップできるようになったので、マップのタプルを一致させる必要があります。

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

そのマッチングを可能にするいくつかの解決策を見つけましたが、すでに定義されたタイプを持つマップのみを通過したいので、マッチングをまったく回避することも可能であると感じています。これはどのように可能でしょうか?

4

1 に答える 1

2

この場合、実際にはこれについて心配する必要はありません。エラーは、case ステートメントが冗長すぎるためです。次のように変更します。

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

case ステートメントの型は、タプルの型を制限します (これは不要です)。ただし、(型消去のため) 実行時に検証できない方法で制限しているため、エラーが発生します。

于 2013-06-06T20:51:49.693 に答える