私は時折、まだ順序付けされていないクラスに対して非常に単純な 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]) の順序付けを行います。