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_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!"
Produit : 4D
Thème : Collections
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)