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