Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v19.8
collection.copy( )

collection.copy( ) 


 

collection.copy ({ resolvPtrs {; agruparCon}} ) -> Resultado 
Parámetro Tipo   Descripción
resolvPtrs  Entero largo in True = resuelve punteros, False u omitido = no resuelve punteros
agruparCon  Collection, Objeto in Colección u objeto compartido a agrupar con la colección resultante
Resultado  Collection in Copia completa de la colección original

El método collection.copy( ) devuelve una copia completa de la instancia de recopilación. Copia completa significa que los objetos o colecciones dentro de la colección original están duplicados y no comparten ninguna referencia con la colección devuelta.

Nota: este método no modifica la colección original.

Si se pasa, El parámetro opcion puede contener una de las siguientes constantes (o ambas):

opciónDescripción
ck resolve pointersSi la colección original contiene valores de tipo de puntero, por defecto la copia también contiene los punteros. Sin embargo, puede resolver los punteros al copiar pasando los ck resolve pointers. En este caso, cada puntero presente en la colección se evalúa al copiar y se utiliza su valor desreferenciado.
ck sharedPor defecto, copy( ) devuelve una colección regular (no compartida), incluso si el comando se aplica a una colección compartida. Pase la constante ck shared para crear una colección compartida. En este caso, puede utilizar el parámetro agruparCon para asociar la colección compartida con otra colección u objeto (ver abajo).

 

El parámetro agruparCon le permite designar una colección o un objeto con el que debe asociarse la colección resultante.

 

Queremos copiar la colección regular (no compartida) $lastnames en el objeto compartido $sharedObject. Para hacer esto, debemos crear una copia compartida de la colección ($sharedLastnames).

 C_OBJECT($sharedObject)
 C_COLLECTION($lastnames;$sharedLastnames)
 C_TEXT($text)
 
 $sharedObject:=New shared object
 
 $text:=Document to text(Get 4D folder(Current resources folder)+"lastnames.txt")
 $lastnames:=JSON Parse($text//$lastnames es una colección regular
 
 $sharedLastnames:=$lastnames.copy(ck shared) //$sharedLastnames es una colección compartida
 
  //Ahora podemos poner $sharedLastnames en $sharedObject
 Use($sharedObject)
    $sharedObject.lastnames:=$sharedLastnames
 End use

Queremos combinar $sharedColl1 y $sharedColl2 pero dado que pertenecen a diferentes grupos compartidos, una combinación directa daría como resultado un error. Debemos hacer una copia compartida de $sharedColl1 y designar $sharedColl2 como grupo compartido para la copia.

 C_COLLECTION($sharedColl1;$sharedColl2;$copyColl)
 
 $sharedColl1:=New shared collection(New shared object("lastname";"Smith"))
 $sharedColl2:=New shared collection(New shared object("lastname";"Brown"))
 
  //$copyColl pertenece al mismo grupo compartido que $sharedColl2
 $copyColl:=$sharedColl1.copy(ck shared;$sharedColl2)
 Use($sharedColl2)
    $sharedColl2.combine($copyColl)
 End use


Tenemos una colección regular ($lastnames) y queremos ponerla en el Storage de la aplicación. Para hacer esto, debemos crear una copia compartida de antemano  ($sharedLastnames).

 C_COLLECTION($lastnames;$sharedLastnames)
 C_TEXT($text)
 
 $text:=Document to text(Get 4D folder(Current resources folder)+"lastnames.txt")
 $lastnames:=JSON Parse($text//$lastnames es una colección regular
 
 $sharedLastnames:=$lastnames.copy(ck shared) // copia compartida
 
 Use(Storage)
    Storage.lastnames:=$sharedLastnames
 End use

Este ejemplo ilustra el uso de la opción ck resolve pointers:

 C_COLLECTION($col)
 C_POINTER($p)
 $p:=->$what
 
 $col:=New collection
 $col.push(New object("alpha";"Hello";"num";1))
 $col.push(New object("beta";"You";"what";$p))
 
 $col2:=$col.copy()
 $col2[1].beta:="World!"
 ALERT($col[0].alpha+" "+$col2[1].beta) //muestra "Hello World!"
 
 $what:="You!"
 $col3:=$col2.copy(ck resolve pointers)
 ALERT($col3[0].alpha+" "+$col3[1].what) //muestra "Hello You!"



Ver también 

OB Copy
Objetos y colecciones compartidos

 
PROPIEDADES 

Producto: 4D
Tema: Colecciones

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v16 R6
Modificado: 4D v18 R3

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)
Manual de lenguaje 4D ( 4D v19.4)
Manual de lenguaje 4D ( 4D v19.5)
Manual de lenguaje 4D ( 4D v19.6)
Manual de lenguaje 4D ( 4D v19.7)
Manual de lenguaje 4D ( 4D v19.8)