请帮助我理解Scala代码:
sortBy(-_._2)我知道第一个下划线(_)是占位符。我知道_2是指元组的第二个成员。但是在这个代码中减号(-)代表什么呢?
发布于 2016-03-05 13:42:18
逆序(即降序),您可以按照减去元组的第二个字段进行排序。
下划线是一个匿名参数,因此-_与x => -x基本相同。
普通scala中的一些例子:
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)发布于 2016-03-05 14:33:41
默认按ascending顺序排序。要反转顺序,可以加上- (减号),正如@TrustNoOne已经解释过的那样。
因此,sortBy(-_._2)按Tuple2的第二个值进行排序,但顺序相反。
还有一个更长的例子:
scala> Map("a"->1,"b"->2, "c"->3).toList.sortBy(-_._2)
res1: List[(String, Int)] = List((c,3), (b,2), (a,1))是相同的
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))https://stackoverflow.com/questions/35814836
复制相似问题