在 scala 集合库中Buffer
继承自Seq
:
Buffer[A] extends Seq[A] with GenericTraversableTemplate[A, Buffer] with BufferLike[A, Buffer[A]] with scala.Cloneable
并且Buffer
文档说:
缓冲区用于通过追加、前置或插入新元素来增量创建元素序列。也可以通过当前序列中元素的索引以随机访问方式访问和修改元素。
而IndexedSeq
文档说:
索引序列的基本特征。
索引序列支持恒定时间或接近恒定时间的元素访问和长度计算。它们是根据抽象方法定义的,适用于索引和长度。
索引序列不会向 Seq 添加任何新方法,但承诺有效实现随机访问模式。
由于Buffer
已经扩展Seq
并且IndexedSeq
没有向Seq
Buffer 添加任何方法,因此必须已经实现了IndexedSeq
接口,并且根据文档,它应该满足IndexedSeq
. 那么为什么Buffer
不是IndexedSeq
.