diff options
author | Paul Phillips <paulp@improving.org> | 2010-07-01 20:31:45 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-07-01 20:31:45 +0000 |
commit | 02f73a54eed0d5153a657728b0fa9f3db629d7f4 (patch) | |
tree | 959adc4b32bccf1bd3b02fad6fb2ec8a045b5ae3 | |
parent | 5a84bffb2c2be9bb3dfb0778e946996a652fbc14 (diff) | |
download | scala-02f73a54eed0d5153a657728b0fa9f3db629d7f4.tar.gz scala-02f73a54eed0d5153a657728b0fa9f3db629d7f4.tar.bz2 scala-02f73a54eed0d5153a657728b0fa9f3db629d7f4.zip |
Separate option Ordering into a trait so it can...
Separate option Ordering into a trait so it can be reused. Closes #3539,
no review.
-rw-r--r-- | src/library/scala/math/Ordering.scala | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/library/scala/math/Ordering.scala b/src/library/scala/math/Ordering.scala index 4527e18338..fdfc4915d9 100644 --- a/src/library/scala/math/Ordering.scala +++ b/src/library/scala/math/Ordering.scala @@ -204,15 +204,17 @@ object Ordering extends LowPriorityOrderingImplicits { } implicit object String extends StringOrdering - implicit def Option[T](implicit ord: Ordering[T]) : Ordering[Option[T]] = - new Ordering[Option[T]] { - def compare(x : Option[T], y : Option[T]) = (x, y) match { - case (None, None) => 0 - case (None, _) => -1 - case (_, None) => 1 - case (Some(x), Some(y)) => ord.compare(x, y) - } + trait OptionOrdering[T] extends Ordering[Option[T]] { + def optionOrdering: Ordering[T] + def compare(x: Option[T], y: Option[T]) = (x, y) match { + case (None, None) => 0 + case (None, _) => -1 + case (_, None) => 1 + case (Some(x), Some(y)) => optionOrdering.compare(x, y) } + } + implicit def Option[T](implicit ord: Ordering[T]): Ordering[Option[T]] = + new OptionOrdering[T] { val optionOrdering = ord } implicit def Iterable[T](implicit ord: Ordering[T]): Ordering[Iterable[T]] = new Ordering[Iterable[T]] { |