在scala中尝试一些基本的图形材料,并遇到了一些我认为SO社区可以提供帮助的东西。对具有类型参数的类进行子类化
首先。我有一个图表特征定义
trait GraphLike[T] { ... }
和子类
class DiGraph[T] extends GraphLike[T] { ... }
我也有一个广度优先搜索类,看起来像这样:
class BreadthFirstSearch[ T ](val graph: GraphLike[T], val sourceVertex: T) extends Graphsearch.GraphSearch[ T ]{
我试图用这个在另一个类看起来像这样:
class SAP[T](val graph: DiGraph[T]) {
class inSap[T](val v: T, val w: T)
{
val bfsV = new BreadthFirstSearch[T](graph, v)
}
}
我在调用新的BreadthFirstSearch时遇到编译器错误。
BreadthFirstSearch采用GraphLike参数。 SAP类有一个图形:DiGraph [T]和DiGraph是GraphLike的子类,所以我期望能够使用DiGraph类型的图形参数调用BreadthFirstSearch的构造函数,因为DiGraph是GraphLike。
但是,编译这样说:
type mismatch; found : com.KGraph.DiGraph[T(in class SAP)] required: com.KGraph.GraphLike[T(in class
inSap)]
它不使用子类有向图代替图式流的喜欢我。任何想法为什么会发生?我猜这可能与类型参数有关。所有的类对于类型参数都是不变的。
我不认为除了类构造函数定义以外的任何东西都需要帮助,但是,如果需要更多代码来计算东西,请更新并提供代码。
哇...小白...:P ....非常感谢您的帮助...... – 2013-05-07 14:30:26