4D v16.3

OB Copy

ホーム

 
4D v16.3
OB Copy

OB Copy 


 

OB Copy ( object {; resolvePtrs} ) -> 戻り値 
引数   説明
object  Object, Object Field in 構造化されたオブジェクト
resolvePtrs  ブール in True = ポインターを解決 False または省略時 = ポインターを解決しない
戻り値  Object in 複製されたオブジェクト

説明   

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"}...]



参照 

OB Get

 
プロパティ 

プロダクト: 4D
テーマ: オブジェクト(ランゲージ)
番号: 1225

This command can be run in preemptive processes

 
履歴 

初出: 4D v14
変更: 4D v15

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)