Объект scala.math.Ordering
объект Ordering extends LowPriorityOrderingImplicits
Это сопутствующий объект для тракта scala.math.Ordering.
Он содержит множество неявных упорядочений, а также методы для построения новых упорядочений.
| Суператрибуты | |
|---|---|
| Тип самого себя |
Классы
Исходный код
объект BigDecimal extends BigDecimalOrdering
Исходный код
Исходный код
объект BigInt extends BigIntOrdering
Исходный код
Исходный код
объект Boolean extends BooleanOrdering
Исходный код
Исходный код
объект Byte extends ByteOrdering
Исходный код
Исходный код
запечатанный тракт CachedReverse[T] extends Ordering[T]
Упорядочение, кэширующее значение его обратного упорядочения.
Исходный код
объект Char extends CharOrdering
Исходный код
Исходный код@migration(" По умолчанию неявное упорядочение для чисел с плавающей точкой double теперь поддерживает согласованность\n".+(" между методом `compare` и методами `lt`, `min`, `equiv` и т.д.,\n").+(" что означает несоответствие поведению IEEE 754 для -0.0 и NaN.\n").+(" Порядок сортировки чисел с плавающей точкой double остаётся тем же, с NaN в конце.\n").+(" Импортируйте Ordering.Double.IeeeOrdering, чтобы восстановить предыдущее поведение.\n").+(" См. также https://www.scala-lang.org/api/current/scala/math/Ordering$$Double$.html."), "2.13.0")
объект DeprecatedDoubleOrdering extends TotalOrdering
Исходный код@migration(" По умолчанию неявное упорядочение для чисел с плавающей точкой float теперь поддерживает согласованность\n".+(" между методом `compare` и методами `lt`, `min`, `equiv` и т.д.,\n").+(" что означает несоответствие поведению IEEE 754 для -0.0F и NaN.\n").+(" Порядок сортировки чисел с плавающей точкой float остаётся тем же, с NaN в конце.\n").+(" Импортируйте Ordering.Float.IeeeOrdering, чтобы восстановить предыдущее поведение.\n").+(" См. также https://www.scala-lang.org/api/current/scala/math/Ordering$$Float$.html."), "2.13.0")
объект DeprecatedFloatOrdering extends TotalOrdering
Исходный код
объект Double
Ordering для Double.
Поведение операций сравнения, предоставляемых по умолчанию (неявным) упорядочением для Double изменилось в версиях 2.10.0 и 2.13.0. До Scala 2.10.0, экземпляр Ordering использовал семантику, согласованную с java.lang.Double.compare.
Scala 2.10.0 изменила реализацию lt, equiv, min, и т.д., чтобы соответствовать IEEE 754, но сохранив метод compare несовместимым с ним, что привело к внутренней несогласованности. IEEE 754 предписывает, что 0.0 == -0.0. Кроме того, он требует, чтобы все сравнения с Double.NaN возвращали false, следовательно 0.0 < Double.NaN, 0.0 > Double.NaN, и Double.NaN == Double.NaN все приводят к false, аналогично None в flatMap.
Признавая ограничение семантики IEEE 754 в терминах упорядочения, Scala 2.13.0 создала два экземпляра: Ordering.Double.IeeeOrdering, который сохраняет семантику IEEE 754 из Scala 2.12.x, и Ordering.Double.TotalOrdering, который возвращает семантику java.lang.Double.compare для всех операций. По умолчанию расширяет TotalOrdering.
List(0.0, 1.0, 0.0 / 0.0, -1.0 / 0.0).sorted // List(-Infinity, 0.0, 1.0, NaN)
List(0.0, 1.0, 0.0 / 0.0, -1.0 / 0.0).min // -Infinity
implicitly[Ordering[Double]].lt(0.0, 0.0 / 0.0) // true
{
import Ordering.Double.IeeeOrdering
List(0.0, 1.0, 0.0 / 0.0, -1.0 / 0.0).sorted // List(-Infinity, 0.0, 1.0, NaN)
List(0.0, 1.0, 0.0 / 0.0, -1.0 / 0.0).min // NaN
implicitly[Ordering[Double]].lt(0.0, 0.0 / 0.0) // false
}
Исходный код
тракт ExtraImplicits
Исходный код
объект Float
Ordering для Float.
Поведение операций сравнения, предоставляемых по умолчанию (неявным) упорядочением для Float изменилось в версиях 2.10.0 и 2.13.0. До Scala 2.10.0, экземпляр Ordering использовал семантику, согласованную с java.lang.Float.compare.
Scala 2.10.0 изменила реализацию lt, equiv, min, и т.д., чтобы соответствовать IEEE 754, но сохранив метод compare несовместимым с ним, что привело к внутренней несогласованности. IEEE 754 предписывает, что 0.0F == -0.0F. Кроме того, он требует, чтобы все сравнения с Float.NaN возвращали false, следовательно 0.0F < Float.NaN, 0.0F > Float.NaN, и Float.NaN == Float.NaN все приводят к false, аналогично None в flatMap.
Признавая ограничение семантики IEEE 754 в терминах упорядочения, Scala 2.13.0 создала два экземпляра: Ordering.Float.IeeeOrdering, который сохраняет семантику IEEE 754 из Scala 2.12.x, и Ordering.Float.TotalOrdering, который возвращает семантику java.lang.Float.compare для всех операций. По умолчанию расширяет TotalOrdering.
List(0.0F, 1.0F, 0.0F / 0.0F, -1.0F / 0.0F).sorted // List(-Infinity, 0.0, 1.0, NaN)
List(0.0F, 1.0F, 0.0F / 0.0F, -1.0F / 0.0F).min // -Infinity
implicitly[Ordering[Float]].lt(0.0F, 0.0F / 0.0F) // true
{
import Ordering.Float.IeeeOrdering
List(0.0F, 1.0F, 0.0F / 0.0F, -1.0F / 0.0F).sorted // List(-Infinity, 0.0, 1.0, NaN)
List(0.0F, 1.0F, 0.0F / 0.0F, -1.0F / 0.0F).min // NaN
implicitly[Ordering[Float]].lt(0.0F, 0.0F / 0.0F) // false
}
Исходный код
объект Implicits extends ExtraImplicits
Объект, содержащий неявные значения, которые не находятся в области видимости по умолчанию.
Исходный код
Исходный код
Исходный код
объект Long extends LongOrdering
Исходный код
Исходный код
Исходный код
объект Short extends ShortOrdering
Источник
Источник
object String extends StringOrdering
Источник
Источник
object Symbol extends SymbolOrdering
Источник
Источник
object Unit extends UnitOrdering
Источник
Наследуемые типы
Источник
type AsComparable[A] = A => Comparable[_ >: A]
| Наследуется от | LowPriorityOrderingImplicits |
|---|
Конкретные методы
Источник@inline
Источник
Учитывая f, функцию из T в S, создаёт Ordering[T], функция сравнения которого эквивалентна:
def compare(x:T, y:T) = Ordering[S].compare(f(x), f(y))
Эта функция является аналогом Ordering.on, где параметр Ordering[S] передаётся неявно.
Источник
Создаёт Ordering[T] на основе функции lt.
Неявные значения
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Наследуемые неявные значения
Источник
| Наследуется от | LowPriorityOrderingImplicits |
|---|
Источник
Это бы создало конфликт со всеми доступными неявными Ordering, но благодаря магии приоритетных неявных значений через наследование, мы можем заставить Ordered[A] => Ordering[A] появиться только если ничего другого не работает. Поскольку Ordered[A] всё равно наследуется от Comparable[A], мы можем добавить также взаимодействие с Java.
| Наследуется от | LowPriorityOrderingImplicits |
|---|
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/math/Ordering$.html