Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19.8
collection.copy( )

collection.copy( ) 


 

collection.copy ({ ZeigerAuflösen {; GruppierenMit}} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
ZeigerAuflösen  Lange Ganzzahl in Wahr = Zeiger auflösen, Falsch oder nicht vergeben = Zeiger nicht auflösen
GruppierenMit  Collection, Objekt in shared collection oder object zum Gruppieren mit der Ergebnis Collection
Funktionsergebnis  Collection in 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:

    optionBeschreibung
    ck resolve pointersEnthä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!"



Siehe auch 

OB Copy
Shared Objects und Shared Collections

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Collections

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v16 R6
Geändert: 4D v18 R3

 
ARTIKELVERWENDUNG

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)