ListIndex

名前

ListIndex — リストの任意のポイントでの挿入機能を持ったインデックス

説明

addAfter:やaddBefore:メッセージがEndsOnlyオプションを伴って要求され、かつインデックスの位置がStartやEnd以外である場合、あるいは、最初でも最後でもないメンバに位置づけられているインデックスにremoveがリクエストされた場合は、不正操作エラーが現れます。

Start、End、Betweenの位置を持つインデックスも、あるメンバに位置づけられたインデックスと同じように、addAfter:かaddBefore:にとって有効な位置となります。これらの場合、そのインデックスの現在の位置にメンバはないため、新しいメンバは現在のインデックス位置に直接挿入されます。このときインデックスは、新しいメンバと、先ほど逆方向に隣り合っていたメンバの間に位置づけられたままとなります。前の位置がStartでメッセージがaddAfter:、あるいは前の位置がEndでメッセージがaddBefore:の場合、インデックスの位置はStartかEndのままです。

インデックスは、リストの任意の位置に位置づけることができるため、これらのメッセージは任意のメンバのシーケンスを構築できます。現在のインデックス位置は変更されません。したがって、リストのあるポイントに複数のメンバを連続的に挿入できます。このとき、先に追加されたメンバは、新しいメンバが追加されるにつれて順番に押し上げられます。

addAfter:とaddBefore:メッセージは、リストに管理されたメンバシーケンスの特定のポイントにメンバを追加します。追加される新しいメンバのポイントは、インデックスの現在位置によって決まります。addAfter:メッセージは、現在のインデックス位置のすぐ後ろにあたるリスト位置にメンバを加え、addBefore:はすぐ前の位置にメンバを加えます。どちらのメッセージもインデックスの現在位置は変更しませんが、StartやEndの位置はBetweenに変わります。

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

Index

メソッド

フェーズ: Using