2012-02-23 52 views
3

我試圖找出所有像Seq,Iterable,Traverable,TraversableLike所有特徵如何一起工作。斯卡拉收藏圖書館遺產

我慢慢變得有點蛛網圖的,因爲我嘗試繪製UML類圖的關係。

是否有一個原因,例如scala.collection.immutable.Seq繼承自scala.collection.generic.GenericTraversableTemplate,即使它從其父母scala.collection.immutable.Iterable繼承該特徵?

集合API似乎是完全重複的遺產,這是導致我想我不明白的東西......

乾杯, 螞蟻

+1

請參閱http://stackoverflow.com/questions/1722137/scala-2-8-collections-design-tutorial/1724807#1724807開始。 – huynhjl 2012-02-23 22:29:53

+1

[本頁](http://www.decodified.com/scala/collections-api.xml)具有圖的是上面列出的答案的副本。我更喜歡它,因爲它的搜索,有鏈接到相應頁面scaladoc。 – 2012-02-24 03:04:13

回答

3

trait Seq [+A] extends Iterable[A] with Seq[A] with GenericTraversableTemplate[A,的序列] with SeqLike[A, Seq[A]] with Parallelizable[A, ParSeq[A]]

trait Iterable [+A] extends Traversable[A] with Iterable[A] with GenericTraversableTemplate[A,可重複使用] with IterableLike[A, Iterable[A]] with Parallelizable[A, ParIterable[A]]

如您所見,SeqTraversable實際上用不同的類型參數延伸GenericTraversableTemplate,因此,例如,方法flatten在每種情況下都具有適當的返回類型。