Array

名前

Array — 相対位置によってのみアクセスをサポートするコレクション

説明

Arrayの作成時のオプションは、配列がすでに作成された後でもすべてセットできます。ただし以下の制限事項に注意してください。

ある配列でbegin:が返すインデックスの型はIndexです。ArrayにはIndexがすでに定義した型で間に合わないような追加メッセージはないため、特別なインデックス型はありません。

ReplaceOnlyオプションのデフォルト値は真で、オーバーライドはできません。

ArrayのIndexSafetyオプションはデフォルトでUnsafeとなっていますが、ある配列のリサイズやメンバ割り当てのリセットを除き、あらゆる操作に対してインデックスは本質的に安全です(配列の内容を修正する個々のメンバ操作だけは、メンバ値を置き換えます。これは既存のインデックスに影響しません)。IndexSafetyのUnsafeAtMember値は、個々のメンバが追加や削除できないためサポートされません。SafeAlwaysの値は、たとえリサイズや再割り当てがあっても、既存のインデックスを安全にします。既存のインデックスが、もはや配列に含まれていないメンバロケーションを参照した場合、インデックスロケーションは、Endロケーションにリセットされます。

Array型は直接作成ができ、個々のメンバの削除を除き、Collectionのすべての標準メッセージをサポートします。コレクション(atOffset:, atOffset:put:)上、あるいはインデックス(setOffset:)上の整数オフセットを使ったメッセージは、すべて高速な一定の時間で走ります。配列のメンバは、これらの整数オフセットによって完全に順序づけられます。メンバに対するそのメンバを通じての連続したアクセスも、完全にサポートされます。Array型は、Collectionから継承されたremoveメッセージを無効にします。つまり、メッセージは定義されますが、メンバを削除しようとするとその操作がサポートされていないというエラーが現れます。

Array型は、Collectionから継承された総称メッセージに、ほとんどメッセージを加えません。任意の他の種類のオブジェクトコレクションと同じ均一な一連の基本メッセージを使って固定構造体の配列にアクセスできるよう、この型は部分的に提供されます。またArray型はコレクション内に要求されるすべてのメモリ割り当てを処理します。しかし、1つのオプションとして、この型は、外部アクセスに対する既存のC配列をオブジェクトコレクションとしてラップするのにも使用できます。さらに、Cの表現式を使った直接操作に対して、内部C配列へのアクセスを提供することもできます。これらの低レベルアクセスの書式は、低レベルの操作と外部オブジェクトアクセスの両方の利点を結合したハイブリッドモードの利用をサポートします。

Array型は、最もシンプルなcollectionsライブラリのcollection型で、Cで直接サポートされるデータ構造に極めて似ています。Cの配列と違い、配列に属するメンバのグループはかならずしもその配列の存続期間に固定されませんが、異なったメンバ数を含むことができるように動的にリサイズされます。配列が動的にリサイズされるとき、既存のメンバ値は可能なだけ多く保存されます。

配列は、コレクションのメンバとしてすべて同時に作成されるメンバのコレクションです。既存のメンバ値は新しい値に置き換えられるかもしれませんが、メンバ自体はそのコレクション内の一定オフセットに固定されます。配列の固定構造体は各メンバのロケーションが直接計算できるため、整数オフセット位置によってメンバへの極めて高速なアクセスを可能にします。

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

Collection CREATABLE DefaultMember MemberBlock

メソッド

フェーズ: Creating

フェーズ: Setting