Стандартная библиотека вроде этого уже делает.Но без присвоения типа объекту, имеющему метод >
...
List(1,2,3).max(Ordering.fromLessThan( (a:Int, b:Int) => b > a) )
По сути, этот синтаксис будет работать для всего, что имеет метод >
или где какое-то неявное преобразование делает доступным >
,Он создает порядок, который можно передать стандартному методу max
.
Еще один пример:
case class S(s:String) {
def >(that:S) = java.text.Collator.getInstance.compare(s, that.s) > 0
}
List(S("abc"), S("ABa"), S("abd")).max(Ordering.fromLessThan( (a:S,b:S) => b>a) )
// res9: S = S(abd)