Scala集合库继承

时间:2012-02-23 22:21:03

标签: scala

我正在尝试弄清楚SeqIterableTraverableTraversableLike等所有特征如何协同工作。

我正在慢慢得到一些蜘蛛网图,因为我尝试在UML类图中绘制关系。

例如scala.collection.immutable.Seq是否继承scala.collection.generic.GenericTraversableTemplate,即使它从其父scala.collection.immutable.Iterable继承该特征,是否有理由?

集合API似乎充满了重复的遗传,这让我觉得我还没有理解......

干杯, 蚂蚁

1 个答案:

答案 0 :(得分:3)

trait Seq [+A] extends Iterable[A] with Seq[A] with GenericTraversableTemplate[A, SEQ ] 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在每种情况下都有适当的返回类型