Я пытаюсь, чтобы мой График реализовал Traversable для его краев.
У меня есть тип ребра с именем Edge [Node, EdgeType].
Мой край - это последний класс.
Код выглядит так:
class Graph[Node, Type] extends Traverasble[Edge[Node, Type]]
Я видел этот пост о создании пользовательского Traversable, но я не могу заставить его работать.
Мой График знает, что это элемент, Edge, но не его тип параметра, Node и EdgeType. Я не мог заставить Фабрику понять эти дженерики.
object Graph extends TraversableFactory[Graph] {
implicit def canBuildFrom[A<:Edge[_,_]]: CanBuildFrom[Coll, A, Graph[_]] = new GenericCanBuildFrom[A]
def newBuilder[A<:Edge[_,_]] = new ListBuffer[A] mapResult (x => new Graph(x:_*))
}
Я пытался использовать более высокие виды, но я не вижу, как решить это с тем же.
Вы знаете, как я могу решить это? Эта проблема возвращается всякий раз, когда класс с некоторыми обобщениями расширяет Traversable, так как его Elem является составом обобщений класса.