2012-02-23 54 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在每种情况下都具有适当的返回类型。