New object
New object {( property ; value {; property2 ; value2 ; ... ; propertyN ; valueN} )} : Object
引数 | 型 | 説明 | |
---|---|---|---|
property | Text | → | 作成するプロパティ名 |
value | any | → | プロパティの値 |
戻り値 | Object | ← | 新しいランゲージオブジェクト |
説明
New object コマンドは新しい空の、あるいは事前に値が入れられたオブジェクトを作成し、その参照を返します。
何も引数を渡さなかった場合、New object は空のオブジェクトを作成し、その参照を返します。この参照をC_OBJECT で作成された4D変数あるいは4Dオブジェクトフィールドへと割り当てて下さい。
注: C_OBJECT はObject type型の変数を宣言しますが、オブジェクトは作成しません。
オプションとして、一つあるいは複数のproperty/value のペアを引数として渡すことにより、新規オブジェクトにあらかじめ値を入れておくことができます:
- property 引数には、作成したいプロパティのラベルを渡します。property 引数は大文字と小文字を区別することに注意してください。
- value 引数にはプロパティに設定したい値を渡します。以下の型の値がサポートされます:
- 数値(実数、整数...) 数値は必ず実数として保存されます。
- テキスト
- ブール
- ポインター
- blob (4D.Blob)
- 日付
- 時間
- null
- ピクチャー
- オブジェクト
- コレクション
以下の点に注意して下さい:
- ポインターを渡した場合、それはそのままの形で保存されます。JSON Stringify コマンドを使用した際に評価されます。
- 日付はカレントの"date inside objects"データベース設定(互換性ページ参照)に応じて、"yyyy-mm-dd" という日付か "YYYY-MM-DDTHH:mm:ss.SSSZ"というフォーマットの文字列で保存されます。4D日付をオブジェクトに保存する前にテキストに変換した場合、プログラムはデフォルトでローカルのタイムゾーンを使用します。SET DATABASE PARAMETER コマンドのDates inside objects セレクターを使用することで、この振る舞いを変更することができます。
- 時間を渡した場合、ミリ秒の数(実数)として保存されます。
例題 1
このコマンドは空の、あるいは値が入れられたオブジェクトを作成することができます:
var $obj1 : Object
var $obj2 : Object
var $obj3 : Object
$obj1:=New object
// $obj1 = {}
$obj2:=New object("name";"Smith")
// $obj2 = {name:Smith}
$obj3:=New object("name";"Smith";"age";40)
// $obj3 = {name:Smith,age:40}
例題 2
オブジェクトを引数の値として渡して、新規のオブジェクトを作成する場合を考えます:
var $Children;$Contact : Object
//オブジェクト配列を作成
ARRAY TEXT($arrChildren;3)
$arrChildren{1}:="Richard"
$arrChildren{2}:="Susan"
$arrChildren{3}:="James"
OB SET ARRAY($Children;"Children";$arrChildren)
//オブジェクトを初期化
$Contact:=New object("FirstName";"Alan";"LastName";"Parker";"age";30;"Children";$Children)
// $Contact = {FirstName:Alan,LastName:Parker,age:30,Children:{Children:[Richard,Susan,James]}}
例題 3
このコマンドはオブジェクトを引数として渡す際に便利です:
var $measures : Object
$measures:=Database measures(New object("path";"DB.cacheReadBytes";"withHistory";True;"historyLength";120))
例題 4
このコマンドを使用すると、オブジェクトをループ内で容易に管理できます:
ARRAY OBJECT($refs;0)
var vCounter : Integer
For(vCounter;1;100)
APPEND TO ARRAY($refs;New object("line";"Line number "+String(vCounter)))
End for