0
這裏被歸併排序:在合併傳遞一個元組排序
def msort[T](less: (T, T) => Boolean)
(xs: List[T]): List[T] = {
def merge(xs: List[T], ys: List[T], acc: List[T]): List[T] =
(xs, ys) match {
case (Nil, _) => ys.reverse ::: acc
case (_, Nil) => xs.reverse ::: acc
case (x :: xs1, y :: ys1) =>
if (less(x, y)) merge(xs1, ys, x :: acc)
else merge(xs, ys1, y :: acc)
}
val n = xs.length/2
if (n == 0) xs
else {
val (ys, zs) = xs splitAt n
merge(msort(less)(ys), msort(less)(zs), Nil).reverse
}
} //> msort: [T](less: (T, T) => Boolean)(xs: List[T])List[T]
我試圖使用定義的元組的比較類型:
val integerSorter = msort[((String, String), Double)]((a._2, b._2) => a._2 < b._2) _
但我收到錯誤:
<console>:1: error: not a legal formal parameter
val integerSorter = msort[((String, String), Double)]((a._2, b._2) => a._2 < b._2) _
如何定義integerSorter,使其接受((String, String), Double)
類型的元組?
應該不是你的函數定義是'(A,B)=> a._2