2016-08-19 4 views
1

Im folgenden Beispiel versuche ich, einen Kontext zu binden, der an das Point-Argument von Link gebunden ist, um als RadPoint sichtbar zu sein.Imposanter Kontext gebunden an Parameter des Parameters

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

type ViewableAsRadPoint[T] = T => RadPoint 

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

Kann ich den Belichtungspunkt in der Berechnung loswerden? Etwas wie:

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

Danke!

dero

Antwort

1

Sie können Point Typ-Parameter von außen sichtbar als Mitglied Art machen:

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

Und dann den Kontext _ : ViewableAsRadPoint als Äquivalent impliziten Parameter dieser Elementtyp gebunden extrahieren:

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