list - scala 中的排序问题,出现“发散隐式扩展......”错误。根据第一个元素对元组列表进行排序,但顺序相反
问题描述
我正在尝试对 Scala 中的元组列表进行排序,以下代码将导致错误:
List("a"->1,"b"->2, "c"->3).sortBy(-_._1)
error: diverging implicit expansion for type scala.math.Ordering[B]
starting with method Tuple9 in object Ordering
List("a"->1,"b"->2, "c"->3).sortBy(-_._1)
^
但下面的代码工作得很好:
List("a"->1,"b"->2, "c"->3).sortBy(_._1)
res39: List[(String, Int)] = List((a,1), (b,2), (c,3))
唯一的区别是负号sortBy
!
问题是什么?
解决方案
由于没有负数之类的东西String
,因此您无法对其进行排序。您可以通过反转排序结果来反转无法否定的元素类型......
List("a"->1, "b"->2, "c"->3).sortBy(_._1).reverse
Ordering
...或通过用显式 reversed替换隐式Ordering
。
List("a"->1, "b"->2, "c"->3).sortBy(_._1)(Ordering[String].reverse)
推荐阅读
- extjs4.2 - ExtJS MultiSelect Edit - 不适用于多值选择
- flutter - 记住 Bool 变量的最后状态
- javascript - 如何在复选框和单选按钮样式中添加图像(不是背景图像)(SVG css 填充问题)
- node.js - 如何在部署的 Lambda 函数中查看 console.log 语句
- visual-studio-code - 为什么 VS Code 不提供具有自动完成功能的方法?
- r - R-根据条件填充另一个数据框
- javascript - 如何在两个字符串之间使用正则表达式匹配和查找原始文件并获取整个字符串?
- exception - 捕获 R tryCatch() 越界异常以忽略执行
- javascript - 背景DIV基于Intersection Observer淡入淡出
- sql - SQL将具有共同批号的两行合并为一行