Spec-Zone.ru › Scala 3.2

Трейт Ordering.OptionOrdering

Исходный код

трейт OptionOrdering[T] extends Ordering[Option[T]]

Суперайпы
трейт Ordering[Option[T]]
трейт PartialOrdering[Option[T]]
трейт Equiv[Option[T]]
трейт Serializable
трейт Comparator[Option[T]]
класс Object
трейт Matchable
класс Any

Наследуемые классы

Исходный код
класс OrderingOps(lhs: T)

Этот внутренний класс определяет операторы сравнения, доступные для T.

Он не может расширять AnyVal, потому что это не класс верхнего уровня или член статически доступного объекта.

Наследуется от Ordering

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

Исходный код
def optionOrdering: Ordering[T]

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

Исходный код
def compare(x: Option[T], y: Option[T]): Int

Возвращает целое число, знак которого указывает, как x сравнивается с y.

Знак результата имеет следующее значение:

- отрицательный, если x < y - положительный, если x > y - нулевой, иначе (если x == y)

Исходный код
override def equals(obj: 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), имеют одинаковые хэш-коды (o1.hashCode.equals(o2.hashCode)).

Параметры значения
that

объект для сравнения с этим объектом на равенство.

Возвращает

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

Определения классов Comparator -> Any

Исходный код
override def hashCode(): Int

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

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

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

Возвращает

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

Определения классов Any

Наследуемые методы

Исходный код
override def equiv(x: Option[T], y: Option[T]): Boolean

Возвращает true, если x == y в порядке сортировки.

Определения классов Ordering -> PartialOrdering -> Equiv
Наследуется от Ordering

Исходный код
override def gt(x: Option[T], y: Option[T]): Boolean

Возвращает true, если x > y в порядке сортировки.

Определения классов Ordering -> PartialOrdering
Наследуется от Ordering

Исходный код
override def gteq(x: Option[T], y: Option[T]): Boolean

Возвращает true, если x >= y в порядке сортировки.

Определения классов Ordering -> PartialOrdering
Наследуется от Ordering

Исходный код
def isReverseOf(other: Ordering[_]): Boolean

Возвращает true, если порядок other является обратным порядком этого порядка.

Эквивалентно other == this.reverse.

Реализации должны переопределять этот метод только в том случае, если они переопределяют reverse также.

Наследуется от Ordering

Исходный код
override def lt(x: Option[T], y: Option[T]): Boolean

Возвращает true, если x < y в порядке сортировки.

Определения классов Ordering -> PartialOrdering
Наследуется от Ordering

Исходный код
override def lteq(x: Option[T], y: Option[T]): Boolean

Возвращает true, если x <= y в порядке сортировки.

Определения классов Ordering -> PartialOrdering
Наследуется от Ordering

Исходный код
def max[U <: Option[T]](x: U, y: U): U

Возвращает x если x >= y, в противном случае y.

Наследуется от Ordering

Исходный код
def min[U <: Option[T]](x: U, y: U): U

Возвращает x если x <= y, в противном случае y.

Наследуется от Ordering
END_OF_DOCUMENT_MARKER

Source
def on[U](f: U => Option[T]): Ordering[U]

Принимая f, функцию из U в T, создаёт Ordering[U], чья функция сравнения эквивалентна:

def compare(x:U, y:U) = Ordering[T].compare(f(x), f(y))
Inherited from Ordering

Source
def orElse(other: Ordering[Option[T]]): Ordering[T]

Создаёт Ordering[T], чья функция сравнения возвращает результат функции сравнения этого Ordering, если она не равна нулю, или же результат функции сравнения other.

Параметры значения
other

Ordering для использования, если этот Ordering возвращает ноль

Пример
case class Pair(a: Int, b: Int)
val pairOrdering = Ordering.by[Pair, Int](_.a)
                          .orElse(Ordering.by[Pair, Int](_.b))
Inherited from Ordering

Source
def orElseBy[S](f: Option[T] => S)(implicit ord: Ordering[S]): Ordering[T]

Принимая f, функцию из T в S, создаёт Ordering[T], чья функция сравнения возвращает результат функции сравнения этого Ordering, если она не равна нулю, или же результат, эквивалентный:

Ordering[S].compare(f(x), f(y))

Эта функция эквивалентна передаче результата Ordering.by(f) в orElse.

Пример
case class Pair(a: Int, b: Int)
val pairOrdering = Ordering.by[Pair, Int](_.a)
                          .orElseBy[Int](_.b)
Inherited from Ordering

Source
override def reverse: Ordering[T]

Возвращает обратный порядок этого.

Реализации, переопределяющие этот метод, ДОЛЖНЫ также переопределить isReverseOf, если они изменяют поведение (например, кеширование не требует переопределения).

Классы определения Ordering -> PartialOrdering
Inherited from Ordering

def reversed(): Comparator[T]

Inherited from Comparator

def thenComparing[U <: Comparable[_ >: U <: <FromJavaObject>]](x$0: Function[_ >: Option[T] <: <FromJavaObject>, _ <: U]): Comparator[T]

Inherited from Comparator

def thenComparing[U <: <FromJavaObject>](x$0: Function[_ >: Option[T] <: <FromJavaObject>, _ <: U], x$1: Comparator[_ >: U <: <FromJavaObject>]): Comparator[T]

Inherited from Comparator

def thenComparing(x$0: Comparator[_ >: Option[T] <: <FromJavaObject>]): Comparator[T]

Inherited from Comparator

def thenComparingDouble(x$0: ToDoubleFunction[_ >: Option[T] <: <FromJavaObject>]): Comparator[T]

Inherited from Comparator

def thenComparingInt(x$0: ToIntFunction[_ >: Option[T] <: <FromJavaObject>]): Comparator[T]

Inherited from Comparator

def thenComparingLong(x$0: ToLongFunction[_ >: Option[T] <: <FromJavaObject>]): Comparator[T]

Inherited from Comparator

Source
def tryCompare(x: Option[T], y: Option[T]): Option[Int]

Возвращает, определено ли сравнение между x и y, и если да, то результат compare(x, y).

Inherited from Ordering

Inherited implicits

Source
implicit def mkOrderingOps(lhs: Option[T]): OrderingOps

Этот неявный метод дополняет T операторами сравнения, определёнными в scala.math.Ordering.Ops.

Inherited from Ordering

© 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/Ordering$$OptionOrdering.html

Spec-Zone.ru

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