4D v19collection.copy( ) |
||||||||
|
4D v19
collection.copy( )
|
opção | Descrição |
ck resolve pointers | se a coleção original conter valores tipo ponteiros, como padrão a cópia também contém os ponteiros. Entretanto, pode resolver os ponteiros quando copiar ao passar o ck resolve pointers. Nesse caso cada ponteiro presente na coleção é avaliado quando copiar e seu valor sem referência for usado. |
ck shared | Como padrão, copy( ) retorna uma coleção regular (não partilhada) , mesmo se o comando for aplicado para uma coleção partilhada. Passe a constante ck shared para criar uma coleção partilhada. nesse caso, pode usar o parâmetro groupWith para associar a coleção partilhada com outra coleção ou objeto (ver abaixo). |
O parâmetro groupWith permite que determine uma coleção ou um objeto com o qual a coleção resultante deve ser associada
Para copiar a coleção (não partilhada) regular $lastnames no objeto partilhado $sharedObject, precisa criar uma cópia partilhada da coleção ($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 é uma coleção normal
$sharedLastnames:=$lastnames.copy(ck shared) //$sharedLastnames é uma coleção partilhada
//Agora podemos copiar $sharedLastnames em $sharedObject
Use($sharedObject)
$sharedObject.lastnames:=$sharedLastnames
End use
Pode combinar $sharedColl1 e $sharedColl2, mas como pertencem a grupos partilhados diferentes, uma combinação direta vai resultar em um erro. Precisa fazer uma cópia partilhada de $sharedColl1 e designar $sharedColl2 como grupo partilhado para a cópia.
C_COLLECTION($sharedColl1;$sharedColl2;$copyColl)
$sharedColl1:=New shared collection(New shared object("lastname";"Smith"))
$sharedColl2:=New shared collection(New shared object("lastname";"Brown"))
//$copyColl pertence ao mesmo grupo partilhado como $sharedColl2
$copyColl:=$sharedColl1.copy(ck shared;$sharedColl2)
Use($sharedColl2)
$sharedColl2.combine($copyColl)
End use
Se tiver uma coleção normal ($lastnames) e quiser colocá-la em Storage da aplicação. Para fazer isso, precisa antes criar uma cópia partilhada ($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 ´´e uma coleção normal
$sharedLastnames:=$lastnames.copy(ck shared) // cópia partilhada
Use(Storage)
Storage.lastnames:=$sharedLastnames
End use
Este exemplo illustra o uso da opção 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) //exibe a mensagem "Hello World!"
$what:="You!"
$col3:=$col2.copy(ck resolve pointers)
ALERT($col3[0].alpha+" "+$col3[1].what) //exibe "Hello You!"
Produto: 4D
Tema: Coleções
Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)