我在 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 能够处理所有的树。