Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v19.8
collection.copy( )

collection.copy( ) 


 

collection.copy ({ résoudrePtrs {; grouperAvec}} ) -> Résultat 
Paramètre Type   Description
résoudrePtrs  Entier long in ck resolve pointers : résoudre les pointeurs avant la copie
grouperAvec  Collection, Objet in Collection ou objet partagé(e) à grouper avec la collection résultante
Résultat  Collection in Copie de la collection (deep copy)

La méthode collection.copy( ) retourne une "copie profonde" (deep copy) de la collection . "Copie profonde" signifie que les objets ou les collections présents dans la collection d'origine sont dupliqués et ne partagent pas leur référence avec la collection qui est retournée.

Note : Cette méthode ne modifie pas la collection d'origine.

S'il est passé, le paramètre option peut contenir l'une des constantes suivantes (ou les deux) :

optionDescription
ck resolve pointersSi la collection d'origine contient des valeurs de type pointeur, par défaut la copie contient également les pointeurs. Toutefois, vous pouvez résoudre les pointeurs au moment de la copie, en passant ck resolve pointers. Dans ce cas, chaque pointeur contenu dans la collection est évalué lors de la copie et sa valeur déréférencée est utilisée.
ck sharedPar défaut, copy( ) retourne une collection standard (non partagée), même si la commande s'applique à une collection partagée. Passez la constante ck shared pour créer une collection partagée. Dans ce cas, vous pouvez utiliser le paramètre grouperAvec pour associer la collection partagée avec un(e) autre collection/objet (voir ci-sessous).

Le paramètre grouperAvec vous permet de désigner une collection ou un objet auquel/à laquelle la collection résultante sera associée.

Nous souhaitons copier la collection standard (non partagée) $lastname dans l'objet partagé $sharedObject. Pour ce faire, nous devons créer une copie partagée de la collection ($sharedLastname). 

 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 est une collection standard
 
 $sharedLastnames:=$lastnames.copy(ck shared) //$sharedLastnames est une collection partagée
 
  //Nous pouvons maintenant intégrer $sharedLastnames à $sharedObject
 Use($sharedObject)
    $sharedObject.lastnames:=$sharedLastnames
 End use

Nous souhaitons combiner $sharedColl1 et $sharedColl2. Etant donné qu'ils appartiennent à différents groupes partagés, une combinaison directe pourrait générer une erreur. Nous devons effectuer une copie partagée de $sharedColl1 et désigner $sharedColl2 comme étant un groupe partagé de la copie.

 C_COLLECTION($sharedColl1;$sharedColl2;$copyColl)</p><p>
 $sharedColl1:=New shared collection(New shared object("lastname";"Smith"))
 $sharedColl2:=New shared collection(New shared object("lastname";"Brown"))
 
  //$copyColl appartient au même groupe partagé que $sharedColl2
 $copyColl:=$sharedColl1.copy(ck shared;$sharedColl2)
 Use($sharedColl2)
    $sharedColl2.combine($copyColl)
 End use

Nous avons une collection standard ($lastnames) et nous souhaitons la placer dans le Storage de l'application. Pour ce faire, nous devons préalablement créer une copie partagée ($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 est une collection standard
 
 $sharedLastnames:=$lastnames.copy(ck shared) // copie partagée
 
 Use(Storage)
    Storage.lastnames:=$sharedLastnames
 End use

Cet exemple illustre l'utilisation de l'option 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) //affiche "Hello World!"
 
 $what:="You!"
 $col3:=$col2.copy(ck resolve pointers)
 ALERT($col3[0].alpha+" "+$col3[1].what) //affiche "Hello You!"



Voir aussi  

OB Copy
Objets partagés et collections partagées

 
PROPRIÉTÉS 

Produit : 4D
Thème : Collections

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v16 R6
Modifié : 4D v18 R3

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)