Spec-Zone.ru › Scala 2.12 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

Линейные надтипы
Известные подклассы

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

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

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

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

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

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

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

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

возвращает

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

Определяющие классы
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

Возвращает строку, отформатированную согласно данной строке format. Форматные строки такие же, как для String.format (@see 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

def →[B](y: B): (Ordered[A], B)

Неявное
Этот член добавлен неявным преобразованием из Ordered[A] в ArrowAssoc[Ordered[A]], выполненным методом ArrowAssoc в scala.Predef.
Классы-определения
ArrowAssoc

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

Spec-Zone.ru

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