Конечно, есть.Граница представления A <% B
для параметра типа является просто сахаром для «параметра неявного значения с типом A => B
».Таким образом, вы хотите сказать, что:
abstract class Foo {
type Repr_Tpe
implicit def orderify: (Repr_Tpe => Ordered[Repr_Tpe])
}
Конечно, реализации должны будут обеспечивать фактическую реализацию orderify
в то же время, когда они указывают тип.Возможно что-то вроде
class Bar extends Foo {
type Repr_Tpe = Int
val orderify = implicitly[Int => Ordered[Int]]
}
или
class Baz[A <% Ordered[A]] extends Foo {
type Repr_Tpe = A
val orderify = implicitly[A => Ordered[A]]
}