@migration(" По умолчанию неявное упорядочение для чисел с плавающей точкой теперь поддерживает согласованность\n".+(" между своим методом `compare` и методами `lt`, `min`, `equiv` и т.д.,\n").+(" что означает несоответствие поведению IEEE 754 для -0.0 и NaN.\n").+(" Порядок сортировки чисел с плавающей точкой остается прежним, однако NaN находится в конце.\n").+(" Импортируйте Ordering.Double.IeeeOrdering, чтобы восстановить предыдущее поведение.\n").+(" См. также https://www.scala-lang.org/api/current/scala/math/Ordering$$Double$.html."), "2.13.0")
Создает 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))
Исходя из 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)
Реализации, переопределяющие этот метод, ОБЯЗАНЫ также переопределить isReverseOf, если они изменяют поведение (например, кэширование не требует его переопределения).