在参数参数上强加上下文绑定

时间:2016-08-19 18:28:27

标签: scala

在下面的示例中,我尝试将Link的Point参数上的上下文绑定为可以作为RadPoint查看。

trait Link[Point, +A <: Link[Point, A]] {
}

type ViewableAsRadPoint[T] = T => RadPoint

def compute[Point: ViewableAsRadPoint, Link <: Link[Point, Link]](link: Link)

我可以摆脱计算中的曝光点吗?类似的东西:

def compute[Link <: Link[_ : ViewableAsRadPoint, Link]](link: Link)

谢谢!

德罗

1 个答案:

答案 0 :(得分:1)

您可以将Point类型参数作为成员类型从外部显示:

trait Link[Point, +A <: Link[Point, A]] {
  type Pt = Point
}

然后提取上下文绑定_ : ViewableAsRadPoint作为该成员类型的等效隐式参数:

def compute[L <: Link[_, L]](link: L)(
  implicit view: ViewableAsRadPoint[link.Pt]) = ???