在scala中订购

时间:2016-12-09 08:13:14

标签: scala

我学习

  

排序

来自link

我自己尝试了下面的代码:

val pairs = Array(("a", 5, 2), ("c", 3, 1), ("b", 1, 3))
Sorting.quickSort(pairs)(Ordering[(Int, String)].on[(String, Int, Int)]((_._3,_.1))

然而,有一个错误说:

Multiple markers at this line
- type mismatch;  found   : (String, Int, Int)  required: String
- ')' expected but double literal found.
- missing parameter type for expanded function ((x$2) => x$2._3)

我可以知道如何解决这个问题吗? 感谢。

1 个答案:

答案 0 :(得分:3)

问题在于:((_._3,_.1))

您需要一个只需(String, Int, Int)的函数并返回(Int, String)。您还错过了该行的结束)

这将为您完成:(x=>(x._3,x._1))请注意x代表输入元组(三元组),然后可以使用._1._2和{{ 1}}。

您也可以这样做._3,它使用模式匹配来命名输入元组的所有元素,以便在不编制索引的情况下轻松引用它们。