2016-06-09 4 views
0
implicit class OrderableFoo[T<:Foo[A,_] forSome {type A <: Ordered[A]}](thisFoo:Foo) 
extends Ordered[Foo]{ 
override def compare(other:Foo):Int = thisFoo.value.compare(other.value) 
} 

Mein Problem:Unklare Fehlermeldung, wenn Sie eine benutzerdefinierte bestellt Typ in Scala definieren

thisFoo.value einen Wert vom Typ A gibt

Typ A bestellt

thisFoo.value.compare ist ein Argument des Typs A

other.value erwarten ist vom Typ A

thisFo o.value.compare (other.value) wird nicht kompiliert. "Erwartete A, aber empfangen Bestellt [A]"

Antwort

0

Es stellt sich heraus, wenn die forSome {type} -Funktion verwendet wird, ist thisFoo A nicht das gleiche wie die anderen A. Alles, was wir wissen, ist, dass beide A bestellbar sind. Dies kann durch die Bereitstellung anderer Typparameter behoben werden.

Verwandte Themen