Spec-Zone.ru › Scala 3.2

Трейт Ordered.Ordered

Объект-компаньон • Исходный код

трейт Ordered[A] extends Comparable[A]

Трейт для данных, имеющих единый, естественный порядок. Обратитесь к 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

Важно, чтобы метод equals для экземпляра Ordered[A] был согласован с методом сравнения. Однако из-за ограничений, присущих семантике стирания типов, нет разумного способа предоставить реализацию по умолчанию для равенства экземпляров Ordered[A]. Поэтому, если вам нужно использовать равенство для экземпляра Ordered[A], вы должны предоставить его самостоятельно при наследовании или создании экземпляра.

Важно, чтобы метод hashCode для экземпляра Ordered[A] был согласован с методом compare. Однако предоставить разумную реализацию по умолчанию невозможно. Поэтому, если вам нужно вычислить хэш-код экземпляра Ordered[A], вы должны предоставить его самостоятельно при наследовании или создании экземпляра.

См. также

scala.math.Ordering, scala.math.PartiallyOrdered

Супертипы
трейт Comparable[A]
класс Object
трейт Matchable
класс Any
Известные подтипы
21 тип
класс Value
класс Val
класс Deadline
класс Duration
класс Infinite
класс FiniteDuration
класс BigDecimal
класс BigInt
трейт OrderedProxy[T]
класс RichBoolean
трейт ScalaNumberProxy[T]
трейт FractionalProxy[T]
класс RichDouble
класс RichFloat
класс RichInt
трейт ScalaWholeNumberProxy[T]
трейт IntegralProxy[T]
класс RichChar
класс RichLong
класс RichByte
класс RichShort

Абстрактные методы

Исходный код
def compare(that: A): Int

Результат сравнения this с операндом that.

Реализуйте этот метод, чтобы определить, как будут сортироваться экземпляры A.

Возвращает x, где:

  • x < 0 при this < that

  • x == 0 при this == that

  • x > 0 при this > that

Конкретные методы

Исходный код
def <(that: A): Boolean

Возвращает true, если this меньше, чем that

Исходный код
def <=(that: A): Boolean

Возвращает true, если this меньше или равно that.

Исходный код
def >(that: A): Boolean

Возвращает true, если this больше, чем that.

Исходный код
def >=(that: A): Boolean

Возвращает true, если this больше или равно that.

Исходный код
def compareTo(that: A): Int

Результат сравнения this с операндом that.

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/math/Ordered.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API