首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Scala代码:(-_._2)

理解Scala代码:(-_._2)
EN

Stack Overflow用户
提问于 2016-03-05 13:38:38
回答 2查看 3.8K关注 0票数 9

请帮助我理解Scala代码:

代码语言:javascript
复制
sortBy(-_._2)

我知道第一个下划线(_)是占位符。我知道_2是指元组的第二个成员。但是在这个代码中减号(-)代表什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-05 13:42:18

逆序(即降序),您可以按照减去元组的第二个字段进行排序。

下划线是一个匿名参数,因此-_与x => -x基本相同。

普通scala中的一些例子:

代码语言:javascript
复制
scala> List(1,2,3).sortBy(-_)
res0: List[Int] = List(3, 2, 1)

scala> List("a"->1,"b"->2, "c"->3).sortBy(-_._2)
res1: List[(String, Int)] = List((c,3), (b,2), (a,1))

scala> List(1,2,3).sortBy(x => -x)
res2: List[Int] = List(3, 2, 1)
票数 16
EN

Stack Overflow用户

发布于 2016-03-05 14:33:41

默认按ascending顺序排序。要反转顺序,可以加上- (减号),正如@TrustNoOne已经解释过的那样。

因此,sortBy(-_._2)Tuple2的第二个值进行排序,但顺序相反。

还有一个更长的例子:

代码语言:javascript
复制
scala> Map("a"->1,"b"->2, "c"->3).toList.sortBy(-_._2)
res1: List[(String, Int)] = List((c,3), (b,2), (a,1))

是相同的

代码语言:javascript
复制
scala> Map("a"->1,"b"->2, "c"->3).toList sortBy { case (key,value) => - value }
res1: List[(String, Int)] = List((c,3), (b,2), (a,1))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35814836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档