【发布时间】:2016-03-13 22:14:35
【问题描述】:
我想做一个通用函数,能够通过它们共同的“子”参数之一对不同的嵌套案例类进行排序。
目前我已经这样做了:
sealed trait SortableByGeoPoint {
val geographicPoint: Int
}
case class A(id: Int, geographicPoint: Int) extends SortableByGeoPoint
case class B(image: String, geographicPoint: Int) extends SortableByGeoPoint
case class C(a: A, other: String)
case class D(b: B, other: Int)
def sortByGeoPoint(sequence: Seq[SortableByGeoPoint]): Seq[SortableByGeoPoint] = sequence.sortBy(_.geographicPoint)
对 A 类或 B 类的序列进行排序效果很好,但我想让它适用于案例类 C 或 D(包含 SortableByGeoPoint 子类)我该如何实现呢?
我看了一下 shapeless,但没有找到方法,但任何方法(知道我稍后会添加其他类,如 C 类或 D 类)都将是完美的。
【问题讨论】: