Spec-Zone.ru › Scala 2.13 Library

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

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

Источник
Ordered.scala
См. также

scala.math.Ordering, scala.math.PartiallyOrdered

Линейные супертипы
Comparable[A], Any
Известные подклассы
Val, Value, Deadline, Duration, Infinite, FiniteDuration, BigDecimal, BigInt

Абстрактные члены

абстрактный def compare(that: A): Int

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

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

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

    x < 0 когда this < that x == 0 когда this == that x > 0 когда this > that

абстрактный def getClass(): Class[_ <: AnyRef]

Возвращает представление класса объекта во время выполнения.

возвращает

объект класса, соответствующий типу получателя во время выполнения.

Определяющие классы
Any

Члены конкретных значений

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

возвращает

true если !(this == that), в противном случае false.

Определяющие классы
Any

final def ##(): Int

Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для числовых типов возвращает значение хэша, согласованное с равенством значений: если два экземпляра типа значения сравниваются как true, тогда ## возвращает одинаковое значение хэша для каждого из них. Для null возвращает хэш-код, где null.hashCode выбрасывает NullPointerException.

возвращает

значение хэша, согласованное с ==

Определяющие классы
Any

def +(other: String): String

Неявный
Этот член добавляется неявным преобразованием из Ordered[A] в any2stringadd[Ordered[A]], выполненным методом any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

def ->[B](y: B): (Ordered[A], B)

Неявный
Этот член добавляется неявным преобразованием из Ordered[A] в ArrowAssoc[Ordered[A]], выполненным методом ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

def <(that: A): Boolean

def <=(that: A): Boolean

final def ==(arg0: Any): Boolean

Проверка двух объектов на равенство. Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

возвращает

true если объект-получатель эквивалентен аргументу; false в противном случае.

Определяющие классы
Any

def >(that: A): Boolean

def >=(that: A): Boolean

final def asInstanceOf[T0]: T0

Преобразовать объект-получатель к типу T0.

Обратите внимание, что успех приведения типов во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] бросит ClassCastException во время выполнения, в то время как выражение List(1).asInstanceOf[List[String]] не бросит. В последнем примере, поскольку аргумент типа стирается во время компиляции, нельзя проверить, относятся ли элементы списка к нужному типу.

возвращает

объект-получатель.

Определяющие классы
Any
Исключения

ClassCastException, если объект-получатель не является экземпляром стирания типа T0.

def compareTo(that: A): Int

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

Определяющие классы
Ordered → Comparable

def ensuring(cond: (Ordered[A]) => Boolean, msg: => Any): Ordered[A]

Неявный
Этот член добавляется неявным преобразованием из Ordered[A] в Ensuring[Ordered[A]], выполненным методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: (Ordered[A]) => Boolean): Ordered[A]

Неявный
Этот член добавлен неявным преобразованием из Ordered[A] вEnsuring[Ordered[A]] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean, msg: => Any): Ordered[A]

Неявный
Этот член добавлен неявным преобразованием из Ordered[A] вEnsuring[Ordered[A]] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean): Ordered[A]

Неявный
Этот член добавлен неявным преобразованием из Ordered[A] вEnsuring[Ordered[A]] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def equals(arg0: Any): Boolean

Сравнивает объект получателя (this) с объектом-аргументом (that) на эквивалентность.

Любая реализация этого метода должна быть отношением эквивалентности:

    Он рефлексивен: для любого экземпляра x типа Any, x.equals(x) должен возвращать true.Он симметричен: для любых экземпляров x и y типа Any, x.equals(y) должен возвращать true тогда и только тогда, когда y.equals(x) возвращает true.Он транзитивен: для любых экземпляров x, y, и z типа Any если x.equals(y) возвращает true и y.equals(z) возвращает true, то x.equals(z) должен возвращать true.

Если вы переопределяете этот метод, вы должны проверить, что ваша реализация остаётся отношением эквивалентности. Кроме того, при переопределении этого метода обычно необходимо переопределить hashCode для обеспечения того, чтобы объекты, которые "равны" (o1.equals(o2) возвращает true)., имели одинаковые хеш-коды (scala.Int). (o1.hashCode.equals(o2.hashCode)).

возвращает

true если объект получателя эквивалентен аргументу; false в противном случае.

Определяющие классы
Any

def formatted(fmtstr: String): String

Возвращает строку, отформатированную согласно заданной строке форматирования. Строки форматирования такие же, как для String.format (@см java.lang.String.format).

Неявный
Этот член добавлен неявным преобразованием из Ordered[A] вStringFormat[Ordered[A]] с помощью метода StringFormat в scala.Predef.
Определяющие классы
StringFormat
Аннотации
@inline()

def hashCode(): Int

Вычисляет значение хеш-кода для объекта.

Алгоритм хеширования по умолчанию зависит от платформы.

Обратите внимание, что для двух объектов могут быть одинаковые хеш-коды (o1.hashCode.equals(o2.hashCode)), но они не обязательно равны (o1.equals(o2) возвращает false). Вырожденная реализация могла бы всегда возвращать 0. Однако требуется, чтобы если два объекта равны (o1.equals(o2) возвращает true), у них были идентичные хеш-коды (o1.hashCode.equals(o2.hashCode)). Поэтому при переопределении этого метода необходимо убедиться, что поведение согласуется с методом equals.

возвращает

значение хеш-кода для данного объекта.

Определяющие классы
Any

final def isInstanceOf[T0]: Boolean

Проверяет, является ли динамический тип объекта получателя T0.

Обратите внимание, что результат проверки зависит от стирания типов в Scala. Поэтому выражение 1.isInstanceOf[String] вернет false, а выражение List(1).isInstanceOf[List[String]] вернет true. В последнем примере, так как аргумент типа стирается во время компиляции, проверить содержимое списка на соответствие указанному типу невозможно.

возвращает

true если объект получателя является экземпляром стирания типа T0; false в противном случае.

Определяющие классы
Any

def toString(): String

Возвращает строковое представление объекта.

По умолчанию представление зависит от платформы.

возвращает

строковое представление объекта.

Определяющие классы
Any

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

Spec-Zone.ru

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