Spec-Zone.ru › Scala 3.1

Трейт scala.math.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] был согласован с методом compare. Однако из-за ограничений, присущих семантике стирания типов, нет разумного способа предоставить реализацию по умолчанию для равенства экземпляров 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.1.1/scala/math/Ordered.html

Spec-Zone.ru

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