Scala-如何在没有模式匹配的情况下对元组列表进行分组?

Scala-如何在没有模式匹配的情况下对元组列表进行分组?,scala,group-by,tuples,Scala,Group By,Tuples,考虑以下结构(实际上,结构要复杂一些): 现在让我们假设我想将所有元组分组为相等的A。我可以这样实现它 list.groupBy { case (x,y) => (x,y) } 但是,我不喜欢在这里使用模式匹配,因为它没有添加任何内容。我想要一些简单的东西,比如: list.groupBy(_) 不幸的是,这无法编译。即使我这样做: list.groupBy[(A,A)](_) 有什么建议可以简化我的代码吗?如果您想根据自己的equals方法对列表中的元素进行分组,只需将标识函数

考虑以下结构(实际上,结构要复杂一些):

现在让我们假设我想将所有元组分组为相等的A。我可以这样实现它

list.groupBy {
  case (x,y) => (x,y)
}
但是,我不喜欢在这里使用模式匹配,因为它没有添加任何内容。我想要一些简单的东西,比如:

list.groupBy(_)
不幸的是,这无法编译。即使我这样做:

list.groupBy[(A,A)](_)

有什么建议可以简化我的代码吗?

如果您想根据自己的
equals
方法对列表中的元素进行分组,只需将标识函数传递给groupBy:

list.groupBy(x=>x)
仅仅编写
list.groupBy()
是不够的,因为
\u
的范围,也就是说它将被删除为
x=>list.groupBy(x)
,这当然不是您想要的

在这里,您将元组解构为它的两个组成部分,只是为了立即像以前一样重新组装它们。换句话说:你实际上没有做任何有用的事情。输入和输出是相同的。这和

list.groupBy { t => t }
这当然只是身份函数,Scala为我们提供了帮助:

list groupBy identity

这并不能回答这个问题。若要评论或要求作者澄清,请在他们的帖子下方留下评论。@Brian:这很可能会提供一个答案,因为它将列表中的项目按等号进行分组。Kim,请添加更多关于为什么你的答案有效或为什么问题无效以及你的答案可能不会再被标记为低质量的信息。此外,获得更多声誉的机会更高……;)这与groupBy with case表达式的作用完全相同,OP不喜欢它,因为它使用了case表达式。所以我把它叫做答案@JeroenRosenberg:添加了更多的文本和解释为什么
groupBy(41;
不起作用。
list.groupBy { t => t }
list groupBy identity