4D v16.3

OB Copy

Página Inicial

 
4D v16.3
OB Copy

OB Copy 


 

OB Copy ( objeto {; resolvePont} ) -> Resultado 
Parâmetro Tipo   Descrição
objeto  Objeto, Campo Objeto in Objeto estruturado
resolvePont  Booleano in True = resolve os ponteiros, False ou se omitido = não resolve ponteiros
Resultado  Objeto in Cópia de objeto

O comando OB Copy devolve um objeto que contém uma cópia completa das propriedades, sub objetos e valores de objeto.

objeto deve ter sido definido utilizando o comando C_OBJECT ou designar um campo objeto 4D..

Se o objeto contém valores de tipo de ponteiro, por padrão a cópia também contém os ponteiros. No entanto, pode resolver os ponteiros ao momento da cópia passando True no parâmetro resolvePont. Neste caso, cada ponteiro presente como valor em objeto se avalia ao momento da cópia e utiliza seu valor não referenciado.

Você quer duplicar um objeto que contém valores simples:

 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//direct copy
    APPEND TO ARRAY($arraySel;$ref_value)
  //o conteúdo de $ref_value é idêntico ao do $Object
    NEXT RECORD([Product])
 End while
  //o conteúdo de $ref_value
 $JsonString:=JSON Stringify array($arraySel)

Duplique um objeto que contenha ponteiros:

 C_OBJECT($ref)
 
 OB SET($ref;"name";->[Company]name) //object with pointers
 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//copy with evaluation of pointers
  // $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"}...]



Ver também 

OB Get

 
PROPRIEDADES 

Produto: 4D
Tema: Objetos (Linguagem)
Número 1225

This command can be run in preemptive processes

 
HISTÓRIA 

Criado por: 4D v14
Modificado: 4D v15

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)