| 4D v15.4OB Copy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v15.4
 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 v15)
	
	
	ランゲージリファレンス ( 4D v15.4)
	
	ランゲージリファレンス ( 4D v15.3)
 コメントを追加
コメントを追加