Como se copia uma estrutura ?

Há (pelo menos) 3 formas de se copiar uma estrutura. Assuma-se uma estrutura existente chamada myStruct.

1) Atribuição de variável:

<cfset myNewStruct = myStruct />

Isto irá criar uma cópia superficial (cópia ou por referência) da myStruct. Quaisquer alterações introduzidas em myStruct também afetarão myNewStruct.

2) structCopy():

<cfset myNewStruct = structCopy(myStruct) />

Esta função interna irá criar uma cópia profunda (ou cópia por valor) de todas as chaves de nível superior e seus valores. Isto significa que quaisquer alterações na myStruct não irão afetar estes valores. No entanto, quaisquer estruturas aninhadas são cópias superficiais (por referência). Isto significa que as estruturas aninhadas dentro da myNewStruct serão afetadas por qualquer mudança às estruturas aninhadas dentro da myStruct.

3) duplicate():

<cfset myNewStruct = duplicate(myStruct) />

Esta função interna irá criar uma cópia profunda (ou cópia por valor) de toda a estrutura e todas as estruturas aninhadas. Não há qualquer referência à estrutura original.

O principal pensamento é: Se você precisa de uma entidade verdadeiramente separada (um clone da estrutura original), use duplicate ().

byCharlie Griefer

Leave a comment