コレクション
コレクションとは、類似または混在した型 (テキスト、数値、日付、オブジェクト、ブール、コレクション、null) の値が順番に並べられたリストです。
コレクション型の変数を扱うには、オブジェクト記法を使用します (オブジェクト記法の使用 参照)。
コレクション要素にアクセスするには、大カッコ内に要素番号を渡します:
collectionRef[expression]
expression には正の整数を返す有効な 4D式であればどんなものでも渡すことができます。 例:
myCollection[5] // コレクションの6番目の要素にアクセス
myCollection[$var]
注: コレクション要素は0 番から始まるということに注意してください。
コレクションの要素に値を代入したり、コレクション要素の値を取得したりすることができます:
myCol[10]:="My new element"
$myVar:=myCol[0]
コレクションの最後の要素を超える要素番号 (インデックス) を指定した場合、コレクションは自動的にリサイズされ、途中のすべての値には null 値が割り当てられらます:
var myCol : Collection
myCol:=New collection("A";"B")
myCol[5]:="Z"
//myCol[2]=null
//myCol[3]=null
//myCol[4]=null
初期化
New collection
コマンドを使うなどして、コレクションはあらかじめ初期化しておく必要があります。初期化しない場合、要素の取得や変更はシンタックスエラーとなります。
例:
var $colVar : Collection // コレクション型の 4D変数の宣言
$colVar:=New collection // コレクションの初期化と 4D変数への代入
通常コレクションと共有コレクション
二種類のコレクションを作成することができます:
New collection
コマンドを使用して作成する通常 (非共有) コレクション。 通常のコレクションは特別なアクセスコントロールをせずに編集可能ですが、プロセス間で共有することはできません。New shared collection
コマンドを使用して作成する共有コレクション。 共有コレクションはプロセス間 (プリエンティブ・スレッド含む) で共有可能なコレクションです。 共有コレクションへのアクセスはUse...End use
構造によって管理されています。
詳細な情報については、共有オブジェクトと共有コレクション を参照ください。
コレクション関数
4D コレクションへの参照は、コレクションの メンバー関数 と呼ばれる特別なクラス関数を利用することができます。 コレクション関数は クラス API リファレンス にまとめられています。
例:
$newCol:=$col.copy() // $col を $newCol にディープ・コピー
$col.push(10;100) // 10 と 100 をコレクションに追加
一部の関数は元のコレクションを変更して返すので、つぎのように連続して呼び出すことが可能です:
$col:=New collection(5;20)
$col2:=$col.push(10;100).sort() // $col2=[5,10,20,100]
propertyPath 引数
いくつかのコレクション関数は引数として propertyPath を受け入れます。 この引数は以下のように用いることができます:
- オブジェクトプロパティ名、 例えば "lastName"
- オブジェクトプロパティパス (ドット文字で繋げられたサブプロパティの階層シーケンスなど)。例: "employee.children.firstName"
警告: 関数に propertyPath 引数を渡す場合、そのプロパティ名には "." (ドット)、"[ ]" (大カッコ)、あるいは " " (スペース) を使えません。これらを使用するとパスを正しく解析できなくなります:
$vmin:=$col.min("My.special.property") // undefined
$vmin:=$col.min(["My.special.property"]) // エラー