【发布时间】:2013-02-15 01:36:59
【问题描述】:
在 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 添加任何方法
缓冲区必须已经实现IndexedSeq 接口并根据文档
应满足IndexedSeq的非功能性要求。
那么为什么Buffer 不是IndexedSeq。
【问题讨论】: