案例类scala的隐式排序

aar*_*man 6 scala implicit case-class shapeless

案例类在scala中似乎没有隐式排序.

scala> case class A(i:Int)
defined class A

scala> implicitly[Ordering[A]]
<console>:10: error: No implicit Ordering defined for A.
              implicitly[Ordering[A]]
Run Code Online (Sandbox Code Playgroud)

我想知道是否总是为所有案例类定义一个隐式排序,如果不是,至少有一种方法可以为相同成员类型的案例类/案例类的每个arity定义隐式排序.

Mil*_*bin 8

案例类的排序可以使用无形,自动导出

import GenericOrdering._

case class Foo(i : Int, s : String)

implicitly[Ordering[Foo]]
val fs = List(
  Foo(2, "b"),
  Foo(2, "a"),
  Foo(1, "c")
).sorted
assert(fs == List(
  Foo(1, "c"),
  Foo(2, "a"),
  Foo(2, "b")
))
Run Code Online (Sandbox Code Playgroud)

请参阅此处以获取完整示例.完整的机制和扩展PartialOrdering将成为即将发布的无形2.1.0版本的一部分.

  • 如有疑问,请使用无形. (4认同)