案例类在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]]
我想知道是否总有一种通用定义所有案例类的隐式排序,如果没有,至少有一种方法可以为每种成员类型的案例类/案例类的每个类定义隐式排序。
最佳答案
案例类的订单可以使用shapeless自动导出,
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")
))
有关完整的示例,请参见here。完整的机制和
PartialOrdering
的扩展将是即将发布的shapeless 2.1.0版本的一部分。
关于scala - 案例类scala的隐式排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917231/