Collection
Collectionクラスは コレクション 型の変数を扱います。
コレクションは次のように初期化します:
New collection {( ...value : any )} : Collection 空の、あるいは値の入った新規コレクションを作成し、その参照を返します |
New shared collection {( ...value : any )} : Collection 空の、あるいは値の入った新規の共有コレクションを作成し、その参照を返します |
例題
var $colVar : Collection // コレクション型の 4D変数の宣言
$colVar:=New collection // コレクションの初期化と 4D変数への代入
概要
New collection
New collection {( ...value : any )} : Collection
引数 | 型 | 説明 | |
---|---|---|---|
value | Number, Text, Date, Time, Boolean, Object, Collection, Picture, Pointer | -> | コレクションの値 |
戻り値 | Collection | <- | 新規のコレクション |
|
説明
New collection
コマンドは、 空の、あるいは値の入った新規コレクションを作成し、その参照を返します 。
引数を 渡さなかった場合、New collection
は空のコレクションを作成し、その参照を返します。
返された参照は、コレクション型の 4D変数に代入する必要があります。
var : Collection
やC_COLLECTION
ステートメントはコレクション型の変数を宣言しますが、コレクション自体は作成しないという点に注意してください。
任意で、一つ以上の value 引数を渡すことで、あらかじめ値の入った新しいコレクションを作成することができます。
または、あとから代入によって要素を一つずつ追加・編集していくことができます。 例:
myCol[10]:="My new element"
コレクションの最終要素を超える要素番号 (インデックス) を指定した場合、コレクションは自動的にリサイズされ、合い間の 要素にはすべて null 値が割り当てられらます。
サポートされている型 (数値、テキスト、日付、ピクチャー、ポインター、オブジェクト、コレクション等) であれば、個数に制限なく値を渡すことができます。 配列とは異なり、コレクションでは異なる型のデータを混ぜることができます。
ただし以下の変換問題については注意する必要があります:
- 渡されたポインターは、そのまま保存されます。ポインターは
JSON Stringify
コマンドを使用することで評価されます。 - 日付は、"dates inside objects" データベース設定に応じて、"yyyy-mm-dd" という日付、または "YYYY-MM-DDTHH:mm:ss.SSSZ" というフォーマットの文字列で保存されます。 コレクションに保存する前に 4D日付をテキストに変換した場合、プログラムはデフォルトでローカルのタイムゾーンを使用します。 このふるまいは
SET DATABASE PARAMETER
コマンドでDates inside objects
セレクターを使用することで変更可能です。 - 時間を渡した場合、それはミリ秒の数 (実数) として保存されます。
例題 1
新しい空のコレクションを作成し、それを 4Dコレクション変数に代入します:
var $myCol : Collection
$myCol:=New collection
// $myCol=[]
例題 2
あらかじめ値の入ったコレクションを作成します:
var $filledColl : Collection
$filledColl:=New collection(33;"mike";"november";->myPtr;Current date)
// $filledColl=[33,"mike","november","->myPtr","2017-03-28T22:00:00.000Z"]
例題 3
新しいコレクションを作成し、そこに新しい要素を追加します:
var $coll : Collection
$coll:=New collection("a";"b";"c")
// $coll=["a","b","c"]
$coll[9]:="z" // 値 "z" を10番目の要素として追加します
$vcolSize:=$coll.length // 10
// $coll=["a","b","c",null,null,null,null,null,null,"z"]
New shared collection
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
New shared collection {( ...value : any )} : Collection
引数 | 型 | 説明 | |
---|---|---|---|
value | Number, Text, Date, Time, Boolean, Shared object, Shared collection | -> | 共有コレクションの値 |
戻り値 | Collection | <- | 新規の共有コレクション |
|
説明
New shared collection
コマンドは、 空の、あるいは値の入った新規の共有コレクションを作成し、その参照を返します 。
このコレクションに要素を追加する場合には Use...End use
構造でくくる必要があり、そうしない場合にはエラーが返されます。ただし、push()
や map()
などの関数を使用して要素を追加する場合は、自動で内部的に Use...End use が使用されるため、必要ありません。 ただし、属性の読み取りは Use...End use
構造の外側でも可能です。
共有コレクションについての詳細は、共有オブジェクトと共有コレクション のページを参照してください。
引数を渡さない場合、New shared collection
は空のコレクションを作成し、その参照を返します。
返された参照は、コレクション型の 4D変数に代入する必要があります。
var : Collection
やC_COLLECTION
ステートメントはコレクション型の変数を宣言しますが、コレクション自体は作成しないという点に注意してください。
任意で、一つ以上の value 引数を渡すことで、あらかじめ値の入った新しい共有コレクションを作成することができます。 または、あとからオ ブジェクト記法による代入で要素を一つずつ追加・編集していくことができます (例題参照)。
共有コレクションの最終要素を超える要素番号 (インデックス) を指定した場合、共有コレクションは自動的にリサイズされ、合い間の要素にはすべて null 値が割り当てられらます。
以下のサポートされる型であれば、いくつでも値を渡すことができます:
- 数値 (実数、倍長整数...)。 数値は常に実数として保存されます。
- テキスト
- ブール
- 日付
- 時間 (ミリ秒の数 (実数) として保存されます)。
- null
- 共有オブジェクト
- 共有コレクション
標準のコレクション (非共有コレクション) とは異なり、共有コレクションはピクチャーやポインター、共有でないオブジェクトおよびコレクションはサポートしていません。
例題
$mySharedCol:=New shared collection("alpha";"omega")
Use($mySharedCol)
$mySharedCol[1]:="beta"
End use
.average()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.average( {propertyPath : Text } ) : Real
引数 | 型 | 説明 | |
---|---|---|---|
propertyPath | Text | -> | 計算に使用するオブジェクトプロパティのパス |
戻り値 | Real, Undefined | <- | コレクションの値の算術平均 |
|