Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
collection.copy( )
|
collection.copy ({ résoudrePtrs {; grouperAvec}} ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
résoudrePtrs | Entier long |
![]() |
ck resolve pointers : résoudre les pointeurs avant la copie | |||||
grouperAvec | Collection, Objet |
![]() |
Collection ou objet partagé(e) à grouper avec la collection résultante | |||||
Résultat | Collection |
![]() |
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) :
option | Description |
ck resolve pointers | Si 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 shared | Par 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_OBJET($sharedObject)
C_COLLECTION($lastnames;$sharedLastnames)
C_TEXTE($text)
$sharedObject:=Creer objet partage
$text:=Document vers texte(Dossier 4D(Dossier Resources courant)+"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
Utiliser($sharedObject)
$sharedObject.lastnames:=$sharedLastnames
Fin utiliser
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:=Creer collection partagee(Creer objet partage("lastname";"Smith"))
$sharedColl2:=Creer collection partagee(Creer objet partage("lastname";"Brown"))
//$copyColl appartient au même groupe partagé que $sharedColl2
$copyColl:=$sharedColl1.copy(ck shared;$sharedColl2)
Utiliser($sharedColl2)
$sharedColl2.combine($copyColl)
Fin utiliser
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_TEXTE($text)
$text:=Document vers texte(Dossier 4D(Dossier Resources courant)+"lastnames.txt")
$lastnames:=JSON Parse($text) //$lastnames est une collection standard
$sharedLastnames:=$lastnames.copy(ck shared) // copie partagée
Utiliser(Storage)
Storage.lastnames:=$sharedLastnames
Fin utiliser
Cet exemple illustre l'utilisation de l'option ck resolve pointers :
C_COLLECTION($col)
C_POINTEUR($p)
$p:=->$what
$col:=Creer collection
$col.push(Creer objet("alpha";"Hello";"num";1))
$col.push(Creer objet("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)
ALERTE($col3[0].alpha+" "+$col3[1].what) //affiche "Hello You!"
Produit : 4D
Thème : Collections
Nom intl. : collection.copy( )
Créé : 4D v16 R6
Modifié : 4D v18 R3
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)