用于排序匿名列表的语法

aep*_*iet 1 sorting scala

class P(val a: Int, val b: Int)
val listp = List[P](new P(2,1))
listp.sortWith( (p1, p2) => p1.b < p2.b )
listp.sortBy(p => (p.b))
Run Code Online (Sandbox Code Playgroud)

listp 很容易排序

val list = List((2, 1))
list.sortWith( (a1, b1), (a2, b2) => b1 < b2)   // Too many arguements
list.sortWith( ((a1, b1), (a2, b2)) => b1 < b2) // Not a legal formal parameter / <error> is already defined as <error>
list.sortBy((a, b) => (b))                      // wrong number of parameters expected
Run Code Online (Sandbox Code Playgroud)

我该如何排序list?列表的所有方法调用都会导致编译错误(我知道我忽略了返回值,我只关心语法).

我只是在寻找匿名函数的语法.我知道可以OrderedComparableJava 一样进行子类化.

编辑 - 这对我来说已经完成了,感谢所有答案:

list.sortWith( _._2 < _._2)
list.sortBy(_._2)
list.sortWith( (t1, t2) => t1._2 < t2._2 )
Run Code Online (Sandbox Code Playgroud)

这是明确的

list.sortWith( (t1: Tuple2[Int, Int], t2: Tuple2[Int, Int]) => t1._2 < t2._2 )
Run Code Online (Sandbox Code Playgroud)

om-*_*nom 9

特定

val list = List((2,1), (3,4))
Run Code Online (Sandbox Code Playgroud)

按第二个元素排序:

list.sortBy(_._2)
Run Code Online (Sandbox Code Playgroud)

或者冗长的:

list.sortBy { case(a,b) => b }
Run Code Online (Sandbox Code Playgroud)


ped*_*rla 5

试试这个:

scala> val list = List((2, 1),(5,-10))
list: List[(Int, Int)] = List((2,1), (5,-10))

scala> list.sortWith{ case ((a1, b1), (a2, b2)) => b1 < b2}
res1: List[(Int, Int)] = List((5,-10), (2,1))
Run Code Online (Sandbox Code Playgroud)