我偶尔发现自己想要一个非常简单的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/

10-10 10:18