【发布时间】:2014-07-23 17:37:24
【问题描述】:
案例类在 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]]
我想知道是否有一般地为所有案例类定义隐式排序,如果没有,至少有一种方法可以为每个案例类/相同成员类型的案例类定义隐式排序。
【问题讨论】:
-
你为什么想要那个?考虑一下,即使在通过 arity 限制它的情况下,您也不知道第一个元素是什么类型,因此您必须找到某种方法来比较任意对象与另一个任意对象
-
@MarioCamou 很好的隐含你可以覆盖,这只是我想要的一堆 1-time 用例类
-
去年我就这个问题写了a blog post。不过值得注意的是,非通用解决方案 (
implicit def OrderingA: Ordering[A] = Ordering.by(_.i)) 一点也不差。 -
@TravisBrown 只是在寻找一种简单的方法使所有案例类排序,如果您有一个不涉及使用外部库的方法,您也可以发布答案
标签: scala implicit case-class shapeless