我更喜欢使用类型类但有一些问题:鉴于以下接口
trait Processor[A] {
def process[B](f: A => B): Processor[B]
}
我有一个Ordering[A]
出于其他原因需要的实现。因此,该方法process
需要一个Ordering[B]
来构造一个Processor[B]
。以下是我想做的,但它显然不起作用:
class Plant[A, OA <: Ordering[A]] extends Processor[A] {
def process[B:Ordering](f: A => B): Processor[B] = null // Plant[B, OB <: Ordering[B]]
}
我怎样才能提供Ordering[B]
实施process
?
我知道这样做的原因是,它Ordering[A]
作为隐式的第二个参数传递。我不知道但不应该对类似于 Haskell 的 Scala 中的类型类提供特殊支持,以便在没有这种“解决方法”的情况下在上面的实现中识别我想要的(只允许B
具有 s 的 s )?Ordering