Spec-Zone.ru › Scala 3.2

Тракт Ordering.IeeeOrdering

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

тракт IeeeOrdering extends Ordering[Float]

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

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

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

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

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

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

См. также

TotalOrdering

Надтипы
тракт Ordering[Float]
тракт PartialOrdering[Float]
тракт Equiv[Float]
тракт Serializable
тракт Comparator[Float]
класс Object
тракт Matchable
класс Any
Известные подтипы
объект FloatIsFractional.type
объект IeeeOrdering.type

Наследуемые классы-линейки

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

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

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

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

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

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

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

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

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

Исходный код
переопределение def equiv(x: Float, y: Float): Boolean

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

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

Исходный код
переопределение def gt(x: Float, y: Float): Boolean

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

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

Исходный код
переопределение def gteq(x: Float, y: Float): Boolean

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

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

Исходный код
переопределение def lt(x: Float, y: Float): Boolean

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

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

Исходный код
переопределение def lteq(x: Float, y: Float): Boolean

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

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

Исходный код
переопределение def max[U <: Float](x: U, y: U): U

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

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

Исходный код
переопределение def min[U <: Float](x: U, y: U): U

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

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

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

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

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

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

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

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

Исходный код
def on[U](f: U => Float): Ordering[U]

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

def compare(x:U, y:U) = Ordering[T].compare(f(x), f(y))
Наследуется от Ordering

Исходный код
def orElse(other: Ordering[Float]): Ordering[T]

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

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

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

Пример
case class Pair(a: Int, b: Int)
val pairOrdering = Ordering.by[Pair, Int](_.a)
                          .orElse(Ordering.by[Pair, Int](_.b))
Наследуется от Ordering

Исходный код
def orElseBy[S](f: Float => 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)
Наследуется от Ordering

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

Возвращает обратный порядок сортировки по отношению к текущему.

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

Классы-определения Ordering -> PartialOrdering
Наследуется от Ordering

def reversed(): Comparator[T]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Наследуемые неявные имплиситы

Источник
implicit def mkOrderingOps(lhs: Float): 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$$Float$$IeeeOrdering.html

Spec-Zone.ru

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