我在Scala中定义了一个正常的树。在Scala中扩展现有的数据结构
sealed abstract class Tree
object Tree {
case class Node (...) extends Tree
case class Leaf (...) extends Tree
}
现在我想添加一个成员变量到树中的所有节点和树叶。 扩展关键字可能吗?或者我必须通过添加[T]来修改树类吗?
更新:
看来我的问题被误解了。 示例应清除它:
我需要这个树结构(实际上更复杂的东西)在一个上下文中有两个双打。 在另一种情况下,我需要它有一个字符串。然而在另一种情况下,我需要没有任何(额外)成员的纯树。而我想第一个两个变种为为的第三个变种。 伪代码:
DTree extends Tree with Touple2[Double, Double]
object DTree {
case class Node (...) extends Tree.Node with Touple2[Double, Double]
case class Leaf (...) extends Tree.Leaf with Touple2[Double, Double]
}
STree extends Tree with String
object DTree {
case class Node (...) extends Tree.Node with String
case class Leaf (...) extends Tree.Leaf with String
}
...
def f (t : Tree) { ... }
我想F到能够处理所有的树木。
您修改了Tree类。我想避免这种情况,因为它在很多地方都有使用,我只需要在一个地方需要更丰富的树。 – 2010-05-09 17:40:27
@ŁukaszLew:然后在继承结构中引入一个新层,用于捕获这种区别,并将共享元素放置在该级别的(抽象)类之一中。 – 2010-05-09 18:09:32