Как сравнить упорядоченный абстрактный тип в типе Scala?

Учитывая приведенный ниже код, метод foo должен сравнить операторно заданный параметр bar с все lowerBound и upperBound относятся к одному и тому же абстрактному типу Bar .

trait Foo {
  type Bar <: Ordered[Bar]
  val lowerBound: Bar
  val upperBound: Bar
  def foo(bar: Bar) = bar >= lowerBound && bar <= upperBound
}

Таким образом можно определить свойство Foo . Проблемы начинаются с нижеследующего конкретного класса FooImpl .

class FooImpl extends Foo {
  type Bar = Int
  val lowerBound = 0
  val upperBound = 5
}

Я понимаю, что scala.Int не реализует то, что scala.runtime.RichInt , а фактически scala.math.Ordered [Int] . Определение типа Bar как RichInt вместо этого не работает, поскольку не соответствует scala.math.Ordered [RichInt] . Моя третья попытка определить тип Bar как Ordered [Ord] , где Ord объявлен как , type Ord и определение его в FooImpl as Int также не работал.

Как могло бы выглядеть возможное закрытое решение?

5
задан Tim Friske 13 February 2012 в 00:11
поделиться