変異可能性 (Mutability)

列の中には作られた後、変更できるものがある。一方、できないものもある。メソッドが 変異するコレクションと変異しないコレクションを区別するため、 <mutable-collection><stretchy-collection>という 混合クラス(mixin classes)が提供されている。

<mutable-collection>   [Abstract Class]
<collection>のこの抽象部分クラスは変更が可能なコレクションを表す。 すべての変異可能なコレクションはelement-setterを実装することで変更を 許すようにする必要がある。
<stretchy-collection>      [Abstract Class]
<collection>のこの抽象部分クラスは、伸縮して要素の追加、除去を 調整できるコレクションを表す。

element-setter new-value mutable-collection key [Generic Function]
  =>  new-value
この関数はkeyに対応する値がそのあとではnew-valueになるように mutable-collectionを変える。

プログラムが、もともとcollectionのキーではないキーでelement-setterを 呼び出したなら、そのコレクションがキーの動的追加をサポートしており、 keynew-valueが追加されていない限り、エラーとなる。

伸縮コレクションは、element-setterがそのコレクションに現れていないキーで 呼び出されることを許し、その場合には新しい要素を追加してコレクションを必要に応じて 拡張する。<stretchy-collection>の各具象部分クラスは指定されたキーで 表される要素がまだないときには、次のように振る舞うelement-setterの メソッドを提供または継承しなければならない。

そのクラスが<explicit-key-collection>の部分クラスなら、 指示されたキーを持つ新しい要素をコレクションに追加する。

そのクラスが<sequence>の部分クラスなら、列を拡大するため まずsize-setterをkey + 1とそのコレクションに対して呼ぶ。 keyは非負整数でなければならない。

<mutable-collection><sequence>および <explicit-key-collection>と混合して、それぞれ <mutable-sequence>クラスおよび <mutable-explicit-key-collection>クラスを形成する。

<mutable-sequence>       [Abstract Class]
このクラスは<sequence><mutable-collection>から継承をする。

<mutable-explicit-key-collection>	[Abstract Class]
このクラスは<explicit-key-collection><mutable-collection> から継承をする。
目次 索引 コレクション(章見出し)、 コレクションの整列 (次節)