我在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