我偶尔发现自己想要一个非常简单的Ordering [A],该类还没有订购。通常是元组或类的字段的投影。下面的类似乎一般这样做
case object Ord {
case class DerivedOrdering[A,B](fn : B=>A)(implicit o : Ordering[A]) extends Ordering[B] {
def compare(a:B, b:B) = o.compare(fn(a), fn(b))
}
}
我还没有在scala库中看到它。在某处吗?
用法
Ord.DerivedOrdering[Int, (Int, List[Int])]( _._1)
按整数对(Int,List [Int])进行排序。
最佳答案
您可以做的是标准库中的一种方法
def by[T, S](f: T => S)(implicit ord: Ordering[S]): Ordering[T]
例如,您可以执行以下操作:
implicit val tupleOrdering = Ordering.by[(Int, List[Int]), Int] {
_._1
}
鲁本
关于scala - Scala中的派生订单?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13204828/