我正在玩排序算法。我很好奇是否有原始类型的内置比较函数。我知道输入(x: Int, y: Int) => x - y
非常简单。我只是想知道是否有内置的比较,所以我不是重新发明轮子。对于字符串(区分大小写和文化敏感),事情显然变得更加复杂。如果没有内置的东西,我会感到惊讶。
答案 0 :(得分:5)
如果某个类型A
有一个Ordering
个实例,您可以通过编写Ordering[A]
来获取该实例,而Ordering
可以使用compare
方法获取该实例 - 扩展到您正在寻找的功能:
scala> Ordering[Int].compare _
res0: (Int, Int) => Int = <function2>
作为基元(以及其他一些类型)的特例,您可以直接引用该实例:
scala> Ordering.Int.compare _
res1: (Int, Int) => Int = <function2>
更一般地说,如果您有类型类F
且A
有一个实例,您可以通过编写implicitly[F[A]]
来获取该实例,因此以下内容也适用:
scala> implicitly[Ordering[Int]].compare _
res2: (Int, Int) => Int = <function2>
我会使用其中的第一个选择。