Scala 抽象参数的视图边界:关于排序的用例
我有一系列的容器Scala 抽象参数的视图边界:关于排序的用例,scala,Scala,我有一系列的容器 trait Value { type Internal implicit def order:Internal => Ordering[Internal] def value:Internal } 我希望能够使用内部类型上的排序,为值的特定子类型定义排序,如: object Value { implicit def order[V <: Value]:Ordering[V] = Ordering((_:V).value) } 对象值{ 隐式定
trait Value {
type Internal
implicit def order:Internal => Ordering[Internal]
def value:Internal
}
我希望能够使用内部类型上的排序,为值的特定子类型定义排序,如:
object Value {
implicit def order[V <: Value]:Ordering[V] = Ordering((_:V).value)
}
对象值{
隐式定义顺序[V您需要对内部
进行类型约束,以确保它具有顺序
。如果您将值
定义为类
,这很容易:
abstract class Value[Internal: Ordering] {
def value: Internal
}
作为一种特征,我认为这不可能直接应用这样的约束,但您可以要求提供合适的订购
:
trait Value {
type Internal
def value: Internal
implicit val ord: Ordering[Internal]
}
并用作
class Foo extends Value {
type Internal = Int
def value = 42
implicit val ord = Ordering[Internal] // Ordering's apply method
}