4D v16.3OB Copy |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
OB Copy
|
OB Copy ( object {; resolvePtrs} ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
object | Object, Object Field |
![]() |
構造化されたオブジェクト | |||||
resolvePtrs | ブール |
![]() |
True = ポインターを解決 False または省略時 = ポインターを解決しない | |||||
戻り値 | Object |
![]() |
複製されたオブジェクト | |||||
OB Copyコマンドは、 objectのプロパティ、オブジェクト内オブジェクト、値を内包した完全なコピーのオブジェクトを返します。
object 引数で指定するオブジェクトは、 C_OBJECT コマンドを使用して定義されている、あるいはオブジェクトフィールドが選択されている必要があります。
object で指定したオブジェクトがポインター型の値を格納している場合、複製先にもポインターが格納されます。もしくは、 resolvePtrs 引数に True を渡すことで、複製時に値を解決させることもできます。この場合、オブジェクト内で値を指定しているポインターは解決され、解決済みの値が使用されます。
単純な値を格納しているオブジェクトを複製する場合を考えます:
C_OBJECT($Object)
C_TEXT($JsonString)
ARRAY OBJECT($arraySel;0)
ALL RECORDS([Product])
While(Not(End selection([Product])))
OB SET($Object;"id";[Product]ID_Product)
OB SET($Object;"Product Name";[Product]Product_Name)
OB SET($Object;"Price";[Product]Price)
OB SET($Object;"Tax rate";[Product]Tax_rate)
$ref_value:=OB Copy($Object) //直接複製
APPEND TO ARRAY($arraySel;$ref_value)
//$ref_value の中身は $Object の中身と完全に同じ
NEXT RECORD([Product])
End while
//$ref_value の中身
$JsonString:=JSON Stringify array($arraySel)
ポインターを格納しているオブジェクトを複製する場合:
C_OBJECT($ref)
OB SET($ref;"name";->[Company]name) //ポインターを含むオブジェクト
OB SET($ref;"country";->[Company]country)
ARRAY OBJECT($sel;0)
ARRAY OBJECT($sel2;0)
ALL RECORDS([Company])
While(Not(End selection([Company])))
$ref_comp:=OB Copy($ref) // copy without evaluating pointers
// $ref_comp={"name":"->[Company]name","country":"->[Company]Country"}
$ref_comp2:=OB Copy($ref;True) //解決済みのポインターを含んだコピー
// $ref_comp={"name":"4D SAS","country":"France"}
APPEND TO ARRAY($sel;$ref_comp)
APPEND TO ARRAY($sel2;$ref_comp2)
NEXT RECORD([Company])
End while
$Object:=JSON Stringify array($sel)
$Object2:=JSON Stringify array($sel2)
// $Object = [{"name":"","country":""},{"name":"","country":""},...]
// $Object2 = [{"name":"4D SAS","country":"France"},{"name":"4D, Inc","country":"USA"},{"name":"Catalan","country":"France"}...]
プロダクト: 4D
テーマ: オブジェクト(ランゲージ)
番号:
1225
初出: 4D v14
変更: 4D v15
ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)