コレクション テーマのコマンドは、コレクションを作成し、操作します。
コレクションとは類似した、あるいは混在した型(テキスト、数値、オブジェクト、コレクション、あるいはnull)の値の、順番に並べられたリストです。コレクション型の変数を扱うためには、オブジェクト記法を使用する必要があります(オブジェクト記法の使用参照)。4D コレクションについての追加の情報については、RELATE MANYの章のの段落を参照してください。
コレクション要素にアクセスするには、大カッコ内に要素番号を渡す必要があります:
collectionRef[expression]
expression には正の整数を返す有効な4D 式であればどんなものでも渡すことができます。例:
myCollection[5]
myCollection[$var]
注: コレクション要素は0 番から始まるということに注意してください。
オブジェクト記法を使用することで、コレクションの要素に値を代入したり、コレクション要素の値を取得することができます:
myCol[10]:="My new element"
$myVar:=myCol[0]
存在するコレクションの最後の要素を超えるインデックスの要素に割り当てようとした場合、コレクションは自動的にリサイズされ、途中の値には全てnull 値が割り当てられらます:
4D コレクション参照はメンバーメソッド と呼ばれる特定のメソッドを利用することができます。オブジェクト記法(オブジェクト記法の使用参照)のおかげで、これらのメソッドは以下のシンタックスを使用することでコレクション参照に対して適用することが可能です:
{$result:=}myCollection.method( {params} )
引数がなかったとしても、メンバーメソッドは小カッコ"()"付きで呼び出されなければならない点に注意して下さい。そうでない場合にはシンタックスエラーが生成されます。
例えば:
$newCol:=$col.copy()
$col.push(10;100)
一部のメソッドは変更した後の元のコレクションを返すので、連続して呼び出しを実行することが可能です:
警告: メソッドを使用する場合、ECMAScript 準拠のプロパティパスを使用する必要があります。即ち、プロパティ名には "."(ドット)、"[ ]"(大カッコ)、あるいは" "(スペース)を使えないということです。例えば、オブジェクトプロパティ識別子 にならえば、$o["My.special.property"] というプロパティ名はサポートされています。ですが、これらはメソッドとして使用することはできません:
$vmin:=$col.min("My.special.property")
$vmin:=$col.min(["My.special.property"])
いくつかのコレクションメソッドは引数としてpropertyPath 引数を受け入れます。この引数は以下のように用いることができます:
- オブジェクトプロパティ名、 例えば"lastName"
- オブジェクトプロパティパス、 例えばドット文字で繋げられたサブプロパティの階層シークエンスなど。例: "employee.children.firstName"
結果として、propertyPath 引数が期待される時、一つ以上の"."を含むプロパティ名の使用は、4D がパスを正常に解析することの妨げとなるため、サポートされません。
注: 詳細な情報については、オブジェクトプロパティ識別子 の章を参照して下さい。