4D v19collection.copy( ) |
||||||||
|
4D v19
collection.copy( )
|
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
4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)