Der Kompilierungsfehler, den Sie erhalten, besagt grundsätzlich, dass Kontextgrenzen nicht für Typaliase verwendet werden können. Kontextgrenzen funktionieren in Funktions- oder Klassendefinitionen. Zum Beispiel
class BST[T: Ordering](val tree: Tree[T])
ist eigentlich Kurzschreibweise für
class BST[T](val tree: Tree[T])(implicit ordering: Ordering[T])
Beachten Sie, dass verschiedene BST
Objekte möglicherweise unterschiedliche Ordering
s haben könnten, und diese Werte müssen zur Laufzeit gespeichert werden.
Für Ihren Anwendungsfall könnte die einfachste Sache sein, den Kontext auf die generischen Funktionen, die Sie im Sinn haben, gebunden zu setzen,
def f[T: Ordering](t1: Tree[T], t2: Tree[T]) {
import scala.math.Ordering.Implicits._
t1.get.entry < t2.get.entry
}
Dann wird die entsprechende Ordering[T]
implizite wird an der Aufrufstelle von f
gefunden werden, wo der Typ T
bekannt ist.
Sie meinen "Kurzschreibweise für:' Klasse BST [T] (Val Baum: Baum [T]) (implizite Reihenfolge: Bestellung [T]) '" – Faiz
@Faiz, fester Dank. –