次の構造を考えてみましょう (実際の構造はもう少し複雑です)。
case class A(id:String,name:String) {
override def equals(obj: Any):Boolean = {
if (obj == null || !obj.isInstanceOf[A]) return false
val a = obj.asInstanceOf[A]
name == a.name
}
override def hashCode() = {
31 + name.hashCode
}
}
val a1 = A("1","a")
val a2 = A("2","a")
val a3 = A("3","b")
val list = List((a1,a2),(a1,a3),(a2,a3))
ここで、すべてのタプルを等しい A でグループ化したいとしましょう。私はこのようにそれを実装することができました
list.groupBy {
case (x,y) => (x,y)
}
しかし、ここでは何も追加しないので、ここでパターン マッチングを使用するのは好きではありません。次のようなシンプルなものが欲しい:
list.groupBy(_)
残念ながら、これはコンパイルされません。私がするときでさえ:
list.groupBy[(A,A)](_)
コードを簡素化する方法について何か提案はありますか?