2014-05-13 28 views
0

我有類似於樹狀結構的東西。 我有一個性狀T。和兩個類(A和B),其延伸T.Scala:在擴展類中鍵入內部類的分辨率

A是這樣的,從B創建新的實例而B本身可以從B.

創建新實例

在根節點特徵TI定義了一個用於保存某些特定值的案例類C,以及一個包含C的所有實例的List [C](讓我們稱之爲listC以保持簡單)。

此外,每個B都知道它的父代。我想要做的是listC = parent.listC。然而,這不起作用,因爲listC期望類型List [C]但獲取List [parent.C]。

我該如何解決這個問題?

另外這裏有一些解決方案,我試過,但沒有工作/沒有可能:

  • 我無法定義的特徵之外的情況下,類作爲其價值觀具有隻能得到內定義的類型特徵。
  • 一個簡單的解決方案是放棄類並使用Tuple。不過,我想堅持課程,以提高可讀性。這是剛剛好叫x.varName作爲x._4
+0

使用共同的超類型是parent.C不同類型比C? –

回答

1

如果你想在的T不同的子類的類型C是你不能在T定義類型的路徑依賴型相同的類型。

Tuple2[A.D, A.E]將不會與Tuple2[B.D, B.E]相同,這是完全相同的問題。

但是,如果一個元組可以工作,那麼您應該能夠在T的伴隨對象中定義C案例類,例如和使用元組一樣。要做到這一點

的一種方法是把什麼嵌套類型可以是邊界,並在您C/Tuples