當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Scala math.Ordered用法及代碼示例


用法 一

trait Ordered[A] extends Comparable[A]

具有單一自然順序的數據的特征。在使用此 trait 之前,請參閱 scala.math.Ordering 以獲取有關是否改為使用 scala.math.Ordering 的更多信息。

實現此特征的類可以使用scala.util.Sorting 進行排序,並且可以與標準比較運算符(例如 > 和 <)進行比較。

Ordered 應該用於具有單一自然排序(如整數)的數據,而 Ordering 允許多個排序實現。如有必要,將隱式創建 Ordering 實例。

scala.math.Ordering 是此特征的替代方案,它允許為同一類型定義多個排序。

scala.math.PartiallyOrdered 是部分有序數據的此特征的替代方案。

例如,創建一個實現 Ordered 的簡單類,然後使用 scala.util.Sorting 對其進行排序:

case class OrderedClass(n:Int) extends Ordered[OrderedClass] {
	def compare(that: OrderedClass) =  this.n - that.n
}

val x = Array(OrderedClass(1), OrderedClass(5), OrderedClass(3))
scala.util.Sorting.quickSort(x)
x

重要的是Ordered[A] 實例的equals 方法與比較方法一致。但是,由於類型擦除語義固有的限製,沒有合理的方法為 Ordered[A] 的實例提供相等的默認實現。因此,如果您需要能夠在Ordered[A] 的實例上使用相等,則必須在繼承或實例化時自己提供。

重要的是Ordered[A] 實例的hashCode 方法與compare 方法一致。但是,不可能提供合理的默認實現。因此,如果您需要能夠計算Ordered[A] 實例的哈希值,您必須在繼承或實例化時自己提供它。

也可以看看:

伴生:

object

源碼:

Ordered.scala

用法 二

object Ordered

伴生:

class

源碼:

Ordered.scala

相關用法


注:本文由純淨天空篩選整理自scala-lang.org大神的英文原創作品 math.Ordered。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。