Błąd kompilacji, który zasadniczo wynika, że ograniczenia kontekstowe nie mogą być używane dla aliasów typów. Kontekstowe granice działają w definicjach funkcji lub klas. Na przykład,
class BST[T: Ordering](val tree: Tree[T])
jest rzeczywiście skróconym zapisem dla
class BST[T](val tree: Tree[T])(implicit ordering: Ordering[T])
Należy pamiętać, że różne BST
obiektów potencjalnie może mieć różne Ordering
s, a wartości te muszą być przechowywane w czasie wykonywania.
Dla Państwa przypadku użycia, najłatwiej może być umieścić kontekst związany od funkcji generycznych trzeba pamiętać,
def f[T: Ordering](t1: Tree[T], t2: Tree[T]) {
import scala.math.Ordering.Implicits._
t1.get.entry < t2.get.entry
}
Następnie odpowiedni Ordering[T]
niejawny będzie można znaleźć na stronie wywoławczy f
, gdzie znany jest typ T
.
Masz na myśli "Skróconą notację dla:" klasa BST [T] (drzewo val: Drzewo [T]) (domyślna kolejność: Kolejność [T]) '" – Faiz
@Faiz, poprawione dzięki. –