Index

名前

Index — コレクションの列挙シーケンスへのリファレンス

説明

Indexオブジェクトは、標準drop:とgetZoneメッセージに加えてトップレベルDefinedObjectのスーパータイプのユニバーサルメッセージをサポートします。それらがコレクションから作成できない場合でも、標準的なcopy:メッセージを使えば、既存のインデックスから新しいインデックスオブジェクトを作成できます。各コピーは、初期インデックスと同じコレクションを参照し、その列挙シーケンスの同じ位置でスタートします。ただし、それ以外のすべての点で、新しいコピーはどの処理に対しても独自の位置を維持する独立したインデックスになります。

コレクションへのメッセージが、インデックスを作成する唯一の有効な方法です。したがって、createメッセージや作成時のオプションがインデックス型とともに使用されることはありません。インデックス上のすべての有効な処理は、それが作成されたコレクションの特性によって決まります。通常Index型はそれらが作成されたコレクションの型名を使って命名されます。これは主に、コレクションのその型のインデックスに対して有効な、特定のメッセージを定義するのに役立ちます。

各インデックスは、それを作成したメッセージの引数に渡されたゾーンに割り当てられたスタンドアロンのオブジェクトです。このゾーンは、コレクションのゾーンにマッチする必要はありません。インデックスの存続期間がそのコレクションの存続期間より短いこともよくあります。たとえばインデックスは、ローカルループ内でのみ使用するために、一時スクラッチゾーンで定義することができます。

他のインデックスが存在しているときにコレクションが変更されると、それらの他のインデックスは悲劇的な影響を受ける恐れがあります。既存のインデックスに影響を与えたり、無効にしたりすることなく成し得る変更については、各collection型の解説を見てください。CollectionのIndexSafetyオプションは、独立した更新に起こり得る影響からインデックスを守る補足的な方法を提供しています。

多くのインデックスは単にメンバをトラバースするだけでなく、それらが参照しているコレクションを修正する機能を提供します。コレクションの内容の管理について、コレクション自身でそれを行うよりも完璧な手段をインデックスが提供することもよくあります。インデックスの位置や他の状態は自動的に更新され、そのインデックス自身を通じてなされたあらゆる変更を反映します。

インデックスの作成には、コレクションに対してbegin:やcreateIndex:メッセージを使用します。主なcollection型はそれぞれに対応するインデックス型を持っており、その種のコレクションの有効な内容に対して、特殊化した型の処理をサポートします。インデックスはいったん作成されればコレクション自身とは別のオブジェクトですが、そのコレクション自身が存在している限り有効なままです。同じコレクションに対して複数のインデックスが同時に存在でき、各インデックスはそのコレクションの列挙シーケンスの中にそれ自身の位置を維持します。

インデックスは、コレクションの列挙シーケンスへのリファレンスです。そのような列挙シーケンスは、そのコレクションのすべてのメンバを、ある順序で含んでいます。この順序は、そのコレクションのメンバに対するある順序づけを使って常に一定に保たれます。これは、そのような順位づけが存在することを前提としていますが、もし順位づけが無ければ、そのシーケンスが固定された順序ですべてのメンバを含むのは、コレクションからのメンバの削除や追加がないときだけに限られることになります。

Indexに採用されているプロトコル

DefinedObject Drop

メソッド

フェーズ: Using

マクロ

グローバル

id <Symbol> Start

インデックス位置に対する値

id <Symbol> End

インデックス位置に対する値

id <Symbol> Between

インデックス位置に対する値

id <Symbol> Removed

インデックス位置に対する値

id <Symbol> Member

インデックス位置に対する値

id <Error> OffsetOutOfRange

collectionsのerror型

id <Error> NoMembers

collectionsのerror型

id <Error> AlreadyAtEnd

collectionsのerror型

id <Error> AlreadyAtStart

collectionsのerror型

id <Error> InvalidIndexLoc

collectionsのerror型

id <Error> InvalidLocSymbol

collectionsのerror型