summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-07-01 20:31:45 +0000
committerPaul Phillips <paulp@improving.org>2010-07-01 20:31:45 +0000
commit02f73a54eed0d5153a657728b0fa9f3db629d7f4 (patch)
tree959adc4b32bccf1bd3b02fad6fb2ec8a045b5ae3
parent5a84bffb2c2be9bb3dfb0778e946996a652fbc14 (diff)
downloadscala-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.scala18
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]] {