Spec-Zone.ru › Scala 3.2

Trait Ordering.IeeeOrdering

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

trait IeeeOrdering extends Ordering[Double]

Порядок для Doubles, который соответствует спецификациям IEEE, когда это возможно.

  • lt, lteq, equiv, gteq и gt согласуются с операциями сравнения примитивов для Doubles и возвращают false при вызове с NaN.

  • min и max согласуются с math.min и math.max, и возвращают NaN при вызове с NaN в качестве любого из аргументов.

  • compare ведет себя так же, как java.lang.Double.compare.

Поскольку поведение Doubles, заданное спецификацией IEEE, не соответствует полному порядку при работе с NaN, для Double определены два порядка: TotalOrdering, который соответствует полному порядку, и IeeeOrdering, который максимально соответствует спецификации IEEE и операциям с плавающей точкой, определённым в scala.math.

Этот порядок может быть предпочтительнее в числовых контекстах.

См. также

TotalOrdering

Надтипы
trait Ordering[Double]
trait PartialOrdering[Double]
trait Equiv[Double]
trait Serializable
trait Comparator[Double]
class Object
trait Matchable
class Any
Известные подтипы
object DoubleIsFractional.type
object IeeeOrdering.type

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

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

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

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

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

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

Исходный код
def compare(x: Double, y: Double): Int

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

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

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

Исходный код
override def equiv(x: Double, y: Double): Boolean

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

Определяющие классы Ordering -> PartialOrdering -> Equiv

Исходный код
override def gt(x: Double, y: Double): Boolean

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

Определяющие классы Ordering -> PartialOrdering

Исходный код
override def gteq(x: Double, y: Double): Boolean

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

Определяющие классы Ordering -> PartialOrdering

Исходный код
override def lt(x: Double, y: Double): Boolean

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

Definition Classes Ordering -> PartialOrdering

Source
override def lteq(x: Double, y: Double): Boolean

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

Definition Classes Ordering -> PartialOrdering

Source
override def max[U <: Double](x: U, y: U): U

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

Definition Classes Ordering

Source
override def min[U <: Double](x: U, y: U): U

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

Definition Classes Ordering

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

Source
def isReverseOf(other: Ordering[_]): Boolean

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

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

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

Inherited from Ordering

Source
def on[U](f: U => Double): 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[Double]): Ordering[T]

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

Value parameters
other

порядок, используемый, если этот порядок возвращает ноль

Example
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: Double => S)(implicit ord: Ordering[S]): Ordering[T]

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

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

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

Example
case class Pair(a: Int, b: Int)
val pairOrdering = Ordering.by[Pair, Int](_.a)
                          .orElseBy[Int](_.b)
Inherited from Ordering
END_OF_DOCUMENT_MARKER

Источник
override def reverse: Ordering[T]

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

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

Классы определения Ordering -> PartialOrdering
Унаследовано из Ordering

def reversed(): Comparator[T]

Унаследовано из Comparator

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

Унаследовано из Comparator

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

Унаследовано из Comparator

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

Унаследовано из Comparator

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

Унаследовано из Comparator

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

Унаследовано из Comparator

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

Унаследовано из Comparator

Источник
def tryCompare(x: Double, y: Double): Option[Int]

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

Унаследовано из Ordering

Унаследованные неявные параметры

Источник
implicit def mkOrderingOps(lhs: Double): OrderingOps

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

Унаследовано из 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$$Double$$IeeeOrdering.html

Spec-Zone.ru

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