Получение заказа на кошек для перечисления Скалы - PullRequest
2 голосов
/ 01 мая 2019

Я бы хотел универсальные кошки Order для Скалы Enumeration. Я пытался

implicit def enumOrder[E <: Enumeration, V <: E#Value]: cats.Order[V] = new cats.Order[V] {
  def compare(x: V, y: V): Int = x.compare(y)
}

но я получаю

[error] overloaded method value compare with alternatives:
[error]   ((that: _1.Value)Int) forSome { val _1: E } <and>
[error]   (that: _1.Value)Int
[error]  cannot be applied to (V)
[error]     def compare(x: V, y: V): Int = x.compare(y)
[error]                                      ^

Кто-нибудь знает, как я могу это реализовать? Спасибо

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

1 Ответ

3 голосов
/ 01 мая 2019
implicit def enumOrder[V <: Enumeration#Value](implicit ord: Ordering[V]): cats.Order[V] = new cats.Order[V] {
  def compare(x: V, y: V): Int = ord.compare(x, y)
}

или

implicit def enumOrder[V <: Enumeration#Value](implicit ord: Ordering[V]): cats.Order[V] = ord.compare(_, _)
...