Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
collection.copy( )
|
collection.copy ({ ZeigerAuflösen {; GruppierenMit}} ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
ZeigerAuflösen | Lange Ganzzahl |
![]() |
Wahr = Zeiger auflösen, Falsch oder nicht vergeben = Zeiger nicht auflösen | |||||
GruppierenMit | Collection, Objekt |
![]() |
shared collection oder object zum Gruppieren mit der Ergebnis Collection | |||||
Funktionsergebnis | Collection |
![]() |
Tiefe Kopie der ursprünglichen Collection | |||||
Die Funktion collection.copy( ) gibt eine tiefe/vollständige Kopie der Collection Instanz zurück. Tiefe Kopie (deep copy) bedeutet, dass Objekte oder Collections innerhalb der ursprünglichen Collection dupliziert werden und keine Referenz mit der zurückgegebenen Collection teilen.
Hinweis: Diese Funktion ändert nicht die ursprüngliche Collection
Der optionale Parameter Option kann eine oder beide der nachfolgenden Konstanten enthalten:
option | Beschreibung |
ck resolve pointers | Enthält die ursprüngliche Collection Werte vom Typ Zeiger, enthält die Kopie standardmäßig ebenfalls Zeiger. Sie können jedoch die Konstante ck resolve pointers übergeben, um Zeiger beim Kopieren aufzulösen. In diesem Fall wird jeder in der Collection verfügbare Zeiger beim Kopieren bewertet und sein aufgelöster Wert verwendet. |
ck shared | collection.copy( ) gibt standardmäßig eine reguläre Collection (not shared) zurück, selbst bei Anwendung auf eine shared collection. Übergeben Sie die Konstante ck shared, um eine shared collection zu erstellen. Dann können Sie sie über den Parameter GruppierenMit mit einer anderen Collection bzw. Objekt gruppieren (siehe unten). |
Mit dem Parameter GruppierenMit können Sie eine Collection oder ein Objekt bestimmen, denen die zurückgegebene Collection zugeordnet werden soll.
We want to copy the $lastnames regular (non shared) collection into the $sharedObject shared object. To do this, we must create a shared copy of the collection ($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 is a regular collection
$sharedLastnames:=$lastnames.copy(ck shared) //$sharedLastnames is a shared collection
//Now we can put $sharedLastnames into $sharedObject
Use($sharedObject)
$sharedObject.lastnames:=$sharedLastnames
End use
Wir wollen $sharedColl1 und $sharedColl2 kombinieren. Da sie aber zu unterschiedlichen Gruppen gehören, führt direktes Kombinieren zu einem Fehler. Deshalb machen wir eine Kopie von $sharedColl1 und weisen $sharedColl2 der Kopie als shared group zu.
C_COLLECTION($sharedColl1;$sharedColl2;$copyColl)
$sharedColl1:=New shared collection(New shared object("lastname";"Smith"))
$sharedColl2:=New shared collection(New shared object("lastname";"Brown"))
//$copyColl gehört zur selben shared group wie $sharedColl2
$copyColl:=$sharedColl1.copy(ck shared;$sharedColl2)
Use($sharedColl2)
$sharedColl2.combine($copyColl)
End use
Wir haben eine reguläre Collection ($lastnames) und wollen sie in den Befehl Storage der Anwendung setzen. To do this, we must create a shared copy beforehand ($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 is a regular collection
$sharedLastnames:=$lastnames.copy(ck shared) // shared copy
Use(Storage)
Storage.lastnames:=$sharedLastnames
End use
Dieses Beispiel zeigt den Einsatz der 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) //zeigt "Hello World!"
$what:="You!"
$col3:=$col2.copy(ck resolve pointers)
ALERT($col3[0].alpha+" "+$col3[1].what) //zeigt "Hello You!"
Produkt: 4D
Thema: Collections
Erstellt: 4D v16 R6
Geändert: 4D v18 R3
4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)