2

scala コレクション ライブラリでは、以下Bufferから継承しSeqます。

Buffer[A] extends Seq[A] with GenericTraversableTemplate[A, Buffer] with BufferLike[A, Buffer[A]] with scala.Cloneable

Bufferドキュメントには次のように書かれています:

バッファーは、新しい要素を追加、先頭に追加、または挿入することによって要素のシーケンスを段階的に作成するために使用されます。現在のシーケンス内の要素のインデックスを介して、ランダム アクセス方式で要素にアクセスして変更することもできます。

IndexedSeqドキュメントには次のように書かれています:

インデックス付きシーケンスのベース トレイト。

インデックス付きシーケンスは、一定時間またはほぼ一定時間の要素アクセスと長さ計算をサポートします。それらは、インデックス付けと長さに適用される抽象メソッドの観点から定義されています。

インデックス付きシーケンスは Seq に新しいメソッドを追加しませんが、ランダム アクセス パターンの効率的な実装を約束します。

Bufferすでに拡張されており、 Bufferにメソッドを追加していないSeqため、インターフェースを既に実装している必要があり、ドキュメントによると、 の非機能要件を満たす必要があります。では、なぜ ではないのでしょうか。IndexedSeqSeqIndexedSeqIndexedSeqBufferIndexedSeq

4

1 に答える 1

5

BufferIndexedSeqほぼ一定時間の要素アクセスと長さの計算を保証しないためではありません。たとえば、Scalaコレクションのパフォーマンス特性のListBufferこの説明でわかるように、はどちらもサポートしていません。

于 2013-02-28T18:25:21.120 に答える