Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
collection.copy( )
|
collection.copy ({ resolvePtrs {; groupWith}} ) -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
resolvePtrs | Inteiro longo |
![]() |
True = resolve ponteiros, False ou omitido = não resolve os ponteiros | |||||
groupWith | Collection, Objeto |
![]() |
Coleção ou objeto partilhado para ser agrupado com a coleção resultante | |||||
Resultado | Collection |
![]() |
Deep copy da coleção original | |||||
A função collection.copy( ) devolve uma cópia completa (deep copy) da instância de recompilação. Cópia completa significa que os objetos ou coleções dentro da coleção original estão duplicados e não compartem nenhuma referência com a coleção devolvida.
Notas: Este método não modifica a coleção original.
Se passado, o parâmetro opção pode conter uma das constantes abaixo (ou ambos):
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
Criado por: 4D v16 R6
Modificado: 4D v18 R3
Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)
Manual de linguagem 4D ( 4D v19.4)
Manual de linguagem 4D ( 4D v19.5)
Manual de linguagem 4D ( 4D v19.6)
Manual de linguagem 4D ( 4D v19.7)
Manual de linguagem 4D ( 4D v19.8)